环信最新SDK 3.4.0.1 配置实现,华为的离线推送。

下面是环信的关于华为推送的文档

SDK3.4.0.1华为推送重大更新

为了方便用户自己升级华为推送相关sdk,环信 SDK 在3.4.0.1之后的版本中将华为推送相关从 IM SDK 中移除,同时提供对应的上传推送token接口供开发者调用,以后的版本就需要开发者自己去集成华为推送相关功能,然后调用下边的方法将 token 发送到环信服务器:

EMClient.getInstance().sendHMSPushTokenToServer("华为appId", "注册华为的 token");

SDK3.4.0及之前的集成

环信 SDK 在3.3.4版本开始支持华为 HMS 推送服务,开发者从3.3.4之前升级并且之前集成了华为推送,然后按照下面的说明重新集成 HMS 推送服务;

PS:现在华为官方已经不支持老版本推送,因此这里边不提供老版本集成说明,使用3.3.4之前的版本 sdk的开发者进款升级环信 sdk 到最新版

PS:集成时需要删除之前的华为jar包和推送代码,并下载新版HMS SDK引用到自己的项目中,其中BasePush两个库是必须的,其他的可以参考华为官方介绍自己决定是否添加

创建华为应用

首先就是去华为开发者后台创建应用,并开启 push 服务,并上传对应的证书指纹,具体可以看下华为官方介绍: 华为HMS消息推送服务集成

上传推送证书

注册完整后,需要在环信开发者后台上传推送证书,选择你的应用—>推送证书—>Huawei—>新增证书,然后输入你在华为开发者后台创建的应用的APPIDAPP SECRET以及程序的包名

客户端配置 HMS

然后SDK 这里对 HMS 注册华为推送 token 进行了封装,集成时还是比较简单的,只需要在 AndroidManifest.xml 配置文件配置相关广播接收器和服务等: 记得设置自己的在华为开发者后台创建的应用的APP ID

PS:在自己实现广播接收器的时候必须继承自环信封装的那个广播接收器com.hyphenate.chat.EMHWPushReceiver,否则收不到环信的离线推送


        
        <meta-data
            android:name="com.huawei.hms.client.appid"
            android:value="华为应用 APP ID" />
        
        <receiver android:name="com.hyphenate.chat.EMHWPushReceiver">
            <intent-filter>
                
                <action android:name="com.huawei.android.push.intent.REGISTRATION"/>
                
                <action android:name="com.huawei.android.push.intent.RECEIVE"/>
                
                <action android:name="com.huawei.android.push.intent.CLICK"/>
                
                <action android:name="com.huawei.intent.action.PUSH_STATE"/>
            intent-filter>
        receiver>

        <receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver">
            <intent-filter>
                
                <action android:name="com.huawei.intent.action.PUSH"/>
            intent-filter>
        receiver>
        

配置完这些之后,在满足条件的华为设备上就可以使用华为推送接收离线推送通知了; 这里的满足条件是指:华为设备必须安装2.4.+以上的华为移动服务,以及开启当前 app 的自启动权限

故障排查

当开发者做完这些之后如果在华为设备上还是收不到推送,可以看下控制台的输出,或者环信 sdcard 上保存的日志,是否有一下日志输出:

// 当设备的华为移动服务版本比较低的时候,无法启用华为推送,会有以下输出
D/ONE SDK: [EMPushHelper] huawei mobile services is not available. please upgrade
// 当注册 token 时,华为开发者后台证书不对应,或者没有开通 Push 服务,当所有的都确认没问题后,如果还是有这样的问题,这个需要联系华为技术支持查看下是否生效
D/ONE SDK: hms service connection suspended. error: 6xxx 或 9xxxxxxxx

后边的 error 为华为官方错误码,更多错误码请参考华为官方错误表:表3-1 HMS 通用错误码及处理方式

可能按照上面的配置也无无法实现,离线的推送。

这里我列出我的配置仅供参考。

1, 登录华为推送后台,找到  华为移动服务HMS ---> 找到推送服务---> SDK 获取 


环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第1张图片
环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第2张图片

下载SDK 和 agent.

把 SDK 添加到 工程中,把agent的代码复制出来,粘贴到项目中。

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第3张图片


 然后就是相关的配合问题了。


1,AndroidManifest  文件的配置。

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第4张图片


2,在application中初始化。环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第5张图片

3,书写 receiver

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第6张图片

4,在demo中找到HMSPushHelper

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第7张图片

5, 在登录环信成功后,获取环信token

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第8张图片

6,在登录页连接HMS

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第9张图片

7,因为我的项目是语音实现离线推送。所以还需要以下配置。

环信最新SDK 3.4.0.1 配置实现,华为的离线推送。_第10张图片


如果是实时IM 的离线推送可以自己检查相应配置,结合环信的文档和demo。

测试:

1,首先华为手机是 EMUI4.1 以及以上的系统才支持

2,华为手机手机必须有  华为移动服务

3,在华为手机上开启APP的 自启动权限。



你可能感兴趣的:(Android)