1. 程式人生 > >信鴿Android推送解決問題記錄--無法跳轉到指定頁面

信鴿Android推送解決問題記錄--無法跳轉到指定頁面

之前收到客服反饋的問題:華為手機,點選通知訊息後,無法跳轉到指定頁面。當時同事定位的問題是廠商通道,因為忙於其他需求,給出的解決辦法是暫時關掉廠商推送。最近有時間了,開始解決這個問題。

整合信鴿推送的時候,可以選擇整合小米、華為、魅族這三家的廠商推送,按照文件整合後,使用相應廠商的裝置執行時,在logcat中,以xinge為tag可以看到很多資訊,如果看到other push token不為空的話,說明廠商通道已經註冊成功了。這個時候,通過信鴿控制檯傳送訊息,即使app程序被殺掉,也是可以收到推送的。但是可能出於某些奇奇怪怪的原因,other push token為空,說明廠商通道註冊失敗,這時會走信鴿推送,當App程序被殺掉後,能否收到推送,就看天意了。

之前使用的信鴿SDK版本是3.2.2,這次既然要搞,自然要升級了,果斷升級至最新的4.2.0-beta版,4+版本相比於3+版本,一個區別是支援廠商通道動態靈活載入。升級完後,發現個很尷尬的問題,廠商通道註冊成功率太低了,基本上註冊成功後,再次註冊,大概率失敗,搞了幾天後,決定降至3.2.6。

現在廠商通道註冊成功了,為什麼點選後無法跳轉呢?信鴿推送有兩種方式下發資訊。

第一種方式是通過自定義的key-value,控制檯設定如圖:對應的,在app端,要使用XGPushManager.onActivityStarted(Context context)方式獲取這些資訊。這種方式,只適用於非廠商通道。如果使用的是廠商通道,這種方式是獲取不到值的。

第二種方式是使用Intent方式,信鴿開發文件中明確指出,使用廠商通道的時候,必須使用這種方式來跳轉並獲取引數。連結如下:http://docs.developer.qq.com/xg/android_access/android_faq.html#訊息點選事件以及跳轉頁面方法,在控制檯中設定如圖:

相應的,在app端,要使用文件中推薦的getIntent()方式獲取相應引數。

所以,為了保證在小米、華為、魅族手機上可以使用廠商通道,而在其他品牌手機上使用信鴿推送,我們最後保留了兩套處理邏輯,先使用XGPushManager.onActivityStarted(Context context)方法獲取自定義的key-value資訊,如果為空時,再嘗試獲取Intent方式傳的引數。這樣,不論最後使用的是廠商通道還是信鴿自己的推送,都能獲取到引數並跳轉。