基于環(huán)信客服SDK集成華為、小米推送

集成華為推送

  1. 下載環(huán)信最新的SDK

  2. 將項(xiàng)目中的hmspush模塊導(dǎo)入自己的項(xiàng)目

    • 環(huán)信目錄.PNG

      注意:不要修改模塊的項(xiàng)目依賴版本
  1. 修改模塊AndroidManifest中的配置
 <!-- 接入HMSSDK 需要注冊的appid參數(shù)。value的值中“10492024”用實(shí)際申請的appid替換,來源于開發(fā)者聯(lián)盟網(wǎng)站應(yīng)用的權(quán)益詳情。格式 android:value="appid=xxxxxx"-->
        <meta-data
            android:name="com.huawei.hms.client.appid"
            android:value="appid=10492024" />
        <!-- 接入HMSSDK 需要注冊的provider,authorities 一定不能與其他應(yīng)用一樣,所以這邊 com.hyphenate.chatuidemo 要替換上您應(yīng)用的包名-->
        <provider
            android:name="com.huawei.hms.update.provider.UpdateProvider"
            android:authorities="com.hyphenate.chatuidemo.hms.update.provider"
            android:exported="false"
            android:grantUriPermissions="true" />
        <!-- 接入HMSSDK 需要注冊的provider,authorities 一定不能與其他應(yīng)用一樣,所以這邊 com.hyphenate.chatuidemo 要替換上您應(yīng)用的包名-->
        <provider
            android:name="com.huawei.updatesdk.fileprovider.UpdateSdkFileProvider"
            android:authorities="com.hyphenate.chatuidemo.updateSdk.fileProvider"
            android:exported="false"
            android:grantUriPermissions="true"/>
        <!-- 使用 HMSAgent 代碼接入HMSSDK 需要注冊的activity-->

注意:
1.appid的value值要使用appid=你申請的華為推送的APP ID
2.包名為你申請華為推送時注冊的包名
華為開放平臺鏈接

  1. 環(huán)信后臺配置推送證書
  2. 初始化華為推送SDK
    在Application中初始化華為 HMS 推送服務(wù)
         HMSPushHelper.getInstance().initHMSAgent(application);
  1. 在自己項(xiàng)目的主頁獲取華為推送的token
        //用于獲取華為推送的token
        HMSPushHelper.getInstance().getHMSToken(activity);
  1. AndroidManifest中注冊廣播接收者接收token
        <!--華為 HMS Config-->
        <!--接入HMSSDK PUSH模塊需要注冊,第三方相關(guān) :接收Push消息(注冊、Push消息、Push連接狀態(tài))廣播,
                此receiver類需要開發(fā)者自己創(chuàng)建并繼承com.huawei.hms.support.api.push.PushReceiver類,
                參考示例代碼中的類:com.huawei.hmsagent.HuaweiPushRevicer-->
        <receiver android:name=".HMSPushReceiver">
            <intent-filter>
                <!-- 必須,用于接收 TOKEN -->
                <action android:name="com.huawei.android.push.intent.REGISTRATION"/>
                <!-- 必須,用于接收消息 -->
                <action android:name="com.huawei.android.push.intent.RECEIVE"/>
                <!-- 可選,用于點(diǎn)擊通知欄或通知欄上的按鈕后觸發(fā) onEvent 回調(diào) -->
                <action android:name="com.huawei.android.push.intent.CLICK"/>
                <!-- 可選,查看 PUSH 通道是否連接,不查看則不需要 -->
                <action android:name="com.huawei.intent.action.PUSH_STATE"/>
            </intent-filter>
        </receiver>
  1. 在環(huán)信上注冊華為推送Token
public class HMSPushReceiver extends PushReceiver {
    private static final String TAG = HMSPushReceiver.class.getSimpleName();

    @Override
    public void onToken(Context context, String token, Bundle extras){
        //沒有失敗回調(diào),假定token失敗時token為null
        if(token != null && !token.equals("")){
            EMLog.d("HWHMSPush", "register huawei hms push token success token:" + token);
            EMClient.getInstance().sendHMSPushTokenToServer("你申請的華為推送的APP ID", token);
        }else{
            EMLog.e("HWHMSPush", "register huawei hms push token fail!");
        }
    }
}
  1. 使用華為控制后臺發(fā)送推送測試
    這里面需要拿到上面返回的Token
    第一次接收離線消息的時候可能會有延時

參考:

  1. 環(huán)信第三方推送集成

集成小米推送

  1. 下載最新的小米SDK
  2. 解壓文件,獲取最新的推送jar
    • 2.PNG
  1. 添加權(quán)限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />?

<uses-permission android:name="android.permission.INTERNET" /> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

<uses-permission android:name="android.permission.GET_TASKS" /> 

<uses-permission android:name="android.permission.VIBRATE"/> 

<permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature" /> <!--這里com.xiaomi.mipushdemo改成app的包名-->

<uses-permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" /><!--這里com.xiaomi.mipushdemo改成app的包名--
  1. 添加服務(wù)相關(guān)服務(wù)
 <!-- mi push -->

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

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


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

        <!--注:此service必須在2.2.5版本以后(包括2.2.5版本)加入-->
        <receiver
            android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
            android:exported="true">
            <intent-filter>

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

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

            </intent-filter>
        </receiver>

        <receiver
            android:name="com.xiaomi.push.service.receivers.PingReceiver"
            android:exported="false"
            android:process=":pushservice">

            <intent-filter>

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

            </intent-filter>

        </receiver>

        <receiver
            android:name="com.hyphenate.chat.EMMipushReceiver"
            android:exported="true"
            tools:ignore="ExportedReceiver">
            <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>
        <!-- mi push end -->

其中EMMipushReceiver為環(huán)信默認(rèn)實(shí)現(xiàn)的廣播接收者

  1. 在環(huán)信初始化的時候,在Options中配置小米推送的key
options.setMipushConfig(mipushAppId, mipushAppKey);
  1. 打開環(huán)信的日志功能
options.setConsoleLog(true);
  1. 在控制臺過濾send device token to server獲取小米推送Token
    • 3.PNG
  1. 小米后臺推送消息進(jìn)行測試
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容