1. 程式人生 > >整合華為推送,華為手機App在活動點開推送重啟App並且未進入到推送落地頁

整合華為推送,華為手機App在活動點開推送重啟App並且未進入到推送落地頁

問題描述:

1、為了提高推送的到達率,在有極光推送的基礎上,App又集成了小米、魅族、華為三家自己的推送服務。

2、華為手機在App在前臺時候,點選推送App重啟,並且推送沒有進入到對應的落地頁。(又是你,華為!)

解決問題:

後臺傳送推送時頁面,會有如圖內容:

解決步驟:

1、首先在AndroidManifest.xml檔案中點選推送跳轉的Activity新增如下程式碼:

  • host內容可以自定義
  • scheme內容可以自定義
<!-- 需要跳轉到的頁面-->
        <activity
                android:name=".demo.activity.PushDemoActivity"
                android:screenOrientation="portrait">
            <intent-filter>

                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:host="com.myhost.push"
                      android:path="/push_detail"
                      android:scheme="myscheme"/>
            </intent-filter>
        </activity>
2、之後在Activity當中打印出Intent內容,程式碼如下:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("myscheme://com.myhost.push/push_detail?message=what"));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        String intentUri = intent.toUri(Intent.URI_INTENT_SCHEME);
        Log.e("====","action是:" + intentUri);
得到列印的intentUri的內容大致如下:
intent://com.myhost.push/push_detailmessage=what#Intent;scheme=myscheme;action=android.intent.action.VIEW;launchFlags=0x10000000;end

將這個內容複製到上圖【自定義動作】輸入框內容。

備註:

【host】、【scheme】內容都可以自定義。


華為推送相關問題:

  • 這裡說幾點關於華為推送的問題。

1、華為推送的初始化依賴於Activity,所以不能在Application當中初始化。

2、華為推送服務當中的【透傳訊息】是可能會丟失的,例如:App被殺死後,透傳訊息有時接收不到,如果重啟App,透傳訊息依然接收不到。所以不推薦使用【透傳】實現重要的功能。