美文网首页
基于环信客服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