美文网首页
基于环信客服SDK集成华为、小米推送

基于环信客服SDK集成华为、小米推送

作者: 一个大西瓜CPI | 来源:发表于2018-11-26 12:04 被阅读77次

集成华为推送

  1. 下载环信最新的SDK

  2. 将项目中的hmspush模块导入自己的项目

    • 环信目录.PNG
      注意:不要修改模块的项目依赖版本
  1. 修改模块AndroidManifest中的配置
 <!-- 接入HMSSDK 需要注册的appid参数。value的值中“10492024”用实际申请的appid替换,来源于开发者联盟网站应用的权益详情。格式 android:value="appid=xxxxxx"-->
        <meta-data
            android:name="com.huawei.hms.client.appid"
            android:value="appid=10492024" />
        <!-- 接入HMSSDK 需要注册的provider,authorities 一定不能与其他应用一样,所以这边 com.hyphenate.chatuidemo 要替换上您应用的包名-->
        <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 一定不能与其他应用一样,所以这边 com.hyphenate.chatuidemo 要替换上您应用的包名-->
        <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. 环信后台配置推送证书
  2. 初始化华为推送SDK
    在Application中初始化华为 HMS 推送服务
         HMSPushHelper.getInstance().initHMSAgent(application);
  1. 在自己项目的主页获取华为推送的token
        //用于获取华为推送的token
        HMSPushHelper.getInstance().getHMSToken(activity);
  1. AndroidManifest中注册广播接收者接收token
        <!--华为 HMS Config-->
        <!--接入HMSSDK PUSH模块需要注册,第三方相关 :接收Push消息(注册、Push消息、Push连接状态)广播,
                此receiver类需要开发者自己创建并继承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"/>
                <!-- 可选,用于点击通知栏或通知栏上的按钮后触发 onEvent 回调 -->
                <action android:name="com.huawei.android.push.intent.CLICK"/>
                <!-- 可选,查看 PUSH 通道是否连接,不查看则不需要 -->
                <action android:name="com.huawei.intent.action.PUSH_STATE"/>
            </intent-filter>
        </receiver>
  1. 在环信上注册华为推送Token
public class HMSPushReceiver extends PushReceiver {
    private static final String TAG = HMSPushReceiver.class.getSimpleName();

    @Override
    public void onToken(Context context, String token, Bundle extras){
        //没有失败回调,假定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. 使用华为控制后台发送推送测试
    这里面需要拿到上面返回的Token
    第一次接收离线消息的时候可能会有延时

参考:

  1. 环信第三方推送集成

集成小米推送

  1. 下载最新的小米SDK
  2. 解压文件,获取最新的推送jar
    • 2.PNG
  1. 添加权限
<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. 添加服务相关服务
 <!-- 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为环信默认实现的广播接收者

  1. 在环信初始化的时候,在Options中配置小米推送的key
options.setMipushConfig(mipushAppId, mipushAppKey);
  1. 打开环信的日志功能
options.setConsoleLog(true);
  1. 在控制台过滤send device token to server获取小米推送Token
    • 3.PNG
  1. 小米后台推送消息进行测试

相关文章

网友评论

      本文标题:基于环信客服SDK集成华为、小米推送

      本文链接:https://www.haomeiwen.com/subject/tlbjqqtx.html