Unity学习笔记-uniwebview4-网页与unity通信
uniwebview4-網頁與unity通信
- 監控用戶在觀看網頁的視頻
- 具體的實現
- 監聽用戶是否在聽音頻
- 其他
想要實現的功能是監控用戶是否在播放視頻和音頻
監控用戶在觀看網頁的視頻
在通過uniebview組件load和show網頁的時候
在這個組件上添加addjavascript
這個方法是用來在網頁的視頻標簽上添加按鍵監聽事件,通過監控網頁的播放鍵和暫停鍵獲得視頻的播放情況
然后在unity的uniwebview組件上繼續添加一個OnMessageReceived委托,通過這個來監聽網頁發送過來的消息
通過上面兩個方法即可實現監聽用戶是否在觀看網頁視頻的功能
具體的實現
addjavascript
(這里有一個注意事項)
不在addjavascript前添加onpagefinished的話,偶爾會報錯,顯示找不到網頁視頻標簽的異常,個人猜測是unity添加js到網頁的時間和uniwebview自己的生命周期之間存在前后順序,在加載完成網頁之后,確保了網頁的代碼啥的已經加載完了,再再unity上添加額外的腳本比較保險和合理
添加的js腳本也貼上吧,這個我也是從網上找的(本人前端并不熟練)
這里有一個提高調試效率的技巧,就是先在任意一款能寫前端代碼的idea(本人使用的是vscode)上寫一個簡單的網頁(里面只要有視頻標簽即可,然后在視頻標簽的路徑上填上任意一個視頻服務器地址),然后運行一下,再在控制臺上輸入我們需要在addjavascript上添加的代碼
然后去測試按鍵是否有監控到
因為我發現unity的addjavascript方法和在前端控制臺手動輸入腳本的步驟很類似,于是就這樣做了,這樣確實快了很多
主要是uniwebview這個組件在windows測試不了,每次都要打包apk會很消耗時間
js腳本下
需要在事件發生后發送消息給unity的話還需要在監聽事件上添加一句
location.href = “uniwebview://action?videostate=0”;
我是在暫停的時候發送videostate=1
播放的時候發送videosttate=0
通過這個字段去做暫停和播放之后的處理的
OnMessageReceived
通過這個委托的message對象獲得從網頁上發送的字段內容進行后續的處理
因為我們的功能是播放時顯示時間的增減,暫停時停止時間變化
所以對應的處理就是是否讓記錄的時間變化
監聽用戶是否在聽音頻
這個使用的方法和上面的不太一樣,因為我們播放的時候使用的不是網頁,而是直接把音頻的數據拉下來,然后在本地的audiosource組件上實時播放
那么這里的監聽方法就要有所變化
我的方法是在獲得了音頻數據的同時,是可以獲得音頻的時長的,通過添加一個新的協程去記錄播放的時間,當播放完畢之后說明這個音頻播放完畢,則認為用戶沒有在聽了,點擊返回的話也認為用戶沒有在聽音頻
因為時間關系,所以沒有做音頻的播放暫停功能,所以這里的邏輯就變成了只要監聽用戶是否在播放音頻的界面,以及是否在音頻的時間內即可
這里有一個注意事項
這里實現功能的途中我使用了兩個協程,在不需要的時候一定要關掉對應的協程,否則會讓程序變得很亂
其他
因為目前還沒有專門寫服務器的同事,所以我們現在都是將數據記錄在本地的方法
總結
以上是生活随笔為你收集整理的Unity学习笔记-uniwebview4-网页与unity通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加快信息化建设对地方发展的_加快设计师职
- 下一篇: [html] img中的src加载失败