Android 極光推送與 WebView 日常問題小結
小菜整理一下最近遇到的兩個小問題;
JPush {no value for <JPUSH_PKGNAME> is provided}
極光推送在日常的應用中應用廣泛,整合簡單送達率較高,小菜剛開始整合時很方便,但是隨著專案的逐漸變大,分包和元件化等應用比較多,此時單獨出 push Module 應用時,會遇到如下問題:


此時雖然會提示問題,但是程式的執行與打包以及推送方面也都是正常;但有問題總是要解決的;
小菜首先檢查 JPUSH_APPKEY 和 JPUSH_PKGNAME 等配置是否正確;一切正常,核對了官網的整合配置也是正確的,之後差了很多資料,嘗試在分包的 Module 下也配置對應引數,即可正常;
manifestPlaceholders = [ JPUSH_PKGNAME: applicationId, JPUSH_APPKEY : "95hh351b9cc0a8b16e3f5d00", //JPush 上註冊的包名對應的 Appkey. JPUSH_CHANNEL: "developer-default", //暫時填寫預設值即可. ]
小菜理解是極光推送在分 Module 時,需要在當前 Module 和引入極光推送的 Module 中均引入包名和 JPUSH_APPKEY 等才可正常應用。
WebView 禁止 VideoView 手勢
WebView可以播放普通網頁或視訊網頁,方便快捷,不僅如此,視訊播放器自帶的操作按鍵都支援,此時視訊 url 主要包括 < video > 標籤;
小菜用 WebView 播放視訊網頁,一般 < video > 都是預設自帶開始暫停等操作按鍵;小菜需要關閉這些操作按鍵,但是 WebView 並沒有提供對應的方法;小菜只能從視訊源上來處理,首先了解一下 < video > 標籤;
controls向用戶顯示控制元件,比如播放按鈕等操作按鍵 autoplay視訊自動播放 loop視訊迴圈播放 muted視訊靜音播放 src視訊資源 url height視訊播放器高度 width視訊播放器的寬度
controls屬性用來控制操作按鍵,若 < video > 取消該屬性即可滿足小菜需求;
< video name="media" autoplay muted loop >
小菜在本地寫一段 < html > 標籤,手動設定 < video > 中 controls 去掉,並將 url 新增進入,藉助 loadData 方法呼叫;而此時需要獲取視訊屬性,包括時長等可以通過編輯 js 來獲取,與普通 html 無異;
String myHtmlStr = "<html><head><meta name=\"viewport\" content=\"width=device-width\"></head><body><video " + "name=\"media\" autoplay muted loop><source src=" + URL + "></video></body></html>"; mWebView.loadData(myHtmlStr, "text/html", null);
Tips:小菜在各個機型上測試,發現部分 vivo 裝置載入視訊後不會自動播放,查詢之後發現需要設定 WebSetting 中 setMediaPlaybackRequiresUserGesture 屬性,即可自動播放;而該屬性需要在 SDK>=17 才可使用,需注意。
WebSettings settings = mWebView.getSettings(); settings.setMediaPlaybackRequiresUserGesture(false);
小菜這次整理的內容較少,但卻是在日常開發中遇到的問題,希望遇到相同問題的朋友可以避免。以下是小菜公眾號,歡迎閒來吐槽~

公眾號