android接入華爲推送注意點

        由於公司產品有及時聊天功能,因此對信息達到及時性要求比較高,因此安排我處理部分android手機在app不運行情況下的信息推送。下面分別介紹華爲推送和小米推送接入。
       一、華爲推送
接入之前,我先研究了華爲推送的demo,目前華爲推送官網是HMS,這個推送裏面集成了很多平臺功能,而Push只是其中一個功能。如果你只是需要接入push功能,個人不建議用HMS,因爲HMS對系統權限要求比較複雜,而且在平臺申請到權限之後,如果要測試推送的話,還需要填apk的指紋證書,而如果用舊版本的push SDK則此處的指紋證書則不需要。所以我們暫時考慮接入華爲專門針對推送服務的SDK(HWPushSDK_v2.7.05)。接入流程如下:
1. 首先上華爲開發者聯盟上註冊認證成爲開發者;
2. 申請通過後,在管理中心處,選擇產品管理,創建產品,名稱應該和工程中的產品名稱一致。
3. 引入華爲推送服務jar包(HwPush_SDK_V2705.jar)到工程;
4. 建立一個華爲推送接收器(com.huawei.android.pushagent.api.PushEventReceive)子類用於接收服務器token,同時將token上傳到自己的服務器。
5. 在androidmanifest.xml文件中配置華爲推送服務權限等。
6. 測試在推送服務下“新建android推送”(推送服務不需要SHA256證書指紋),發送範圍選擇指定到具體的EMEI號(是token的第2位之後的15位數字)。
7. 如果要出發onEvent(...)回調函數,需要添加Extras鍵值對;
附(androidmanifest.xml華爲配置):


二、小米推送
1. 首先上小米推送運營平臺註冊認證。
2. 創建應用,包名確定後不能修改。
3. 導入小米推送服務jar包(MiPush_SDK_Client_3_2_2.jar)到工程。
4. 建立一個小米推送接收器(com.xiaomi.mipush.sdk.PushMessageReceiver)子類用於重寫服務註冊的結果。
5. 在androidmanifest.xml文件中配置華爲推送服務權限等。


附(androidmanifest.xml小米配置):

<!-- 小米推送服務註冊 (4個後臺服務)-->

<service android:name="com.xiaomi.push.service.XMJobService" android:process=":pushservice" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" android:enabled="true"/>

<service android:name="com.xiaomi.push.service.XMPushService" android:process=":pushservice" android:enabled="true"/>

<service android:name="com.xiaomi.mipush.sdk.PushMessageHandler" android:exported="true" android:enabled="true"/>

<service android:name="com.xiaomi.mipush.sdk.MessageHandleService" android:enabled="true"/>

<!-- 小米推送服務   (3個廣播)-->

    <receiver

        android:exported="true"

        android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver" >

        <intent-filter>

            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

            <category android:name="android.intent.category.DEFAULT" />

        </intent-filter>

    </receiver>

    <receiver

        android:exported="false"

        android:process=":pushservice"

        android:name="com.xiaomi.push.service.receivers.PingReceiver" >

        <intent-filter>

            <action android:name="com.xiaomi.push.PING_TIMER" />

        </intent-filter>

    </receiver>

    //繼承了PushMessageReceiverDemoMessageReceiver的廣播註冊

    <receiver

        android:name="com.winhong.android.zhiku.receiver.Mipush_Broadcast"

        android:exported="true">

        <intent-filter>

            <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />

        </intent-filter>

        <intent-filter>

            <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />

        </intent-filter>

        <intent-filter>

            <action android:name="com.xiaomi.mipush.ERROR" />

        </intent-filter>

    </receiver>

 

<!-- 小米推送服務 -->

<permission android:name="com.winhong.android.zhiku.permission.MIPUSH_RECEIVE" android:protectionLevel="signature"/>

<uses-permission android:name="com.winhong.android.zhiku.permission.MIPUSH_RECEIVE"/>


androidmanifest.xml華爲配置):

    <!-- 華爲推送服務  -->

        <!-- 第三方相關 :接收Push消息(註冊、Push消息、Push連接狀態、標籤,LBS上報結果)廣播 -->

        <receiver android:name="com.winhong.android.zhiku.receiver.Hwpush_Broadcast" >

            <intent-filter>

                <!-- 必須,用於接收token-->

                <action android:name="com.huawei.android.push.intent.REGISTRATION" />

                <!-- 必須,用於接收消息-->

                <action android:name="com.huawei.android.push.intent.RECEIVE" />

                <!-- 可選,用於點擊通知欄或通知欄上的按鈕後觸發onEvent回調-->

                <action android:name="com.huawei.android.push.intent.CLICK" />

                <!-- 可選,查看push通道是否連接,不查看則不需要-->

                <action android:name="com.huawei.intent.action.PUSH_STATE" />

            </intent-filter>

        </receiver>

 

        <!-- 備註:Push相關的android組件需要添加到業務的AndroidManifest.xml,

          Push相關android組件運行在另外一個進程是爲了防止Push服務異常而影響主業務 -->

          

        <!-- PushSDK:PushSDK接收外部請求事件入口 -->

        <receiver

            android:name="com.huawei.android.pushagent.PushEventReceiver"

            android:process=":pushservice" >

            <intent-filter>

                <action android:name="com.huawei.android.push.intent.REFRESH_PUSH_CHANNEL" />

                <action android:name="com.huawei.intent.action.PUSH" />

                <action android:name="com.huawei.intent.action.PUSH_ON" />

                <action android:name="com.huawei.android.push.PLUGIN" />

            </intent-filter>

            <intent-filter>

                <action android:name="android.intent.action.PACKAGE_ADDED" />

                <action android:name="android.intent.action.PACKAGE_REMOVED" />

                <data android:scheme="package" />

            </intent-filter>

        </receiver>

        <receiver

            android:name="com.huawei.android.pushagent.PushBootReceiver"

            android:process=":pushservice" >

            <intent-filter>

                <action android:name="com.huawei.android.push.intent.REGISTER" />

                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

            </intent-filter>

            <meta-data

                android:name="CS_cloud_version"

                android:value="\u0032\u0037\u0030\u0035" />

        </receiver>

        

        <!-- PushSDK:Push服務 -->

        <service

            android:name="com.huawei.android.pushagent.PushService"

            android:process=":pushservice" >

        </service>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章