(注:这些功能都是在配置好以引入并配置好云信相关sdk后的操作)
网易IM推送这一块儿在我的项目里面流程还挺长的啊!打开文档(https://dev.yunxin.163.com/docs/product/IM%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF/SDK%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/Android%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/%E6%8E%A8%E9%80%81?#%E6%8E%A8%E9%80%81)开始跟着做,到各个厂商开放平台注册账号,等待账号审核。
到各个厂商的开放平台中创建我的应用,添加资料,等待审核。
到这一步,就获取到了各个厂商的appid、appkey、appSecret。这些数据都是为了让云信能够沟通各个厂商的推送功能,这些数据的用处在两处:①配置网易云控制台中应用的推送证书;②代码中,初始化推送(MixPushConfig)设置;
接下来都是代码里面的事儿了:①配置AndroidManifest.xml文件,具体的配置方法在文档中有所记载;②在NIMClient.init(this, getLoginInfo(), NimSDKOptionConfig.getSDKOptions(this))方法的第三个参数中配置好初始化推送(MixPushConfig)设置。
配置的代码是:这些代码返回的MixPushConfig对象设置在options中:options.mixPushConfig = buildMixPushConfig();
private static MixPushConfig buildMixPushConfig() { // 第三方推送配置 MixPushConfig config = new MixPushConfig(); // 小米推送 config.xmAppId = miAppId; config.xmAppKey = miAppKey; config.xmCertificateName = "xmxxxx"; // // 华为推送 config.hwCertificateName = "hwxxxx"; // // 魅族推送 config.mzAppId = mzAppId; config.mzAppKey = mzAppKey; config.mzCertificateName = "mzxxxx"; // // // fcm 推送,适用于海外用户,不使用fcm请不要配置 // config.fcmCertificateName = "DEMO_FCM_PUSH"; // vivo推送 // config.vivoCertificateName = "DEMO_VIVO_PUSH"; return config; }
注册对应机型的push模块:
if (Constant.Current_System.equals(Constant.SYS_HUAWEI)) HMSAgent.init(this); if (Constant.Current_System.equals(Constant.SYS_MEIZU)) PushManager.register(context, Constant.mzAppId, Constant.mzAppKey); if (Constant.Current_System.equals(Constant.SYS_XIAOMI)) MiPushClient.registerPush(context, Constant.miAppId, Constant.miAppKey);
打开初始化信息提醒:
NIMClient.toggleNotification(true); // 初始化消息提醒
到这里前期的配置就好了 吧(大概/八成/也许/可能)
最后就是配置各厂商的兼容性推送(PushMessageReceiver)了,这一块大概没什么难度,每个方法测试一下,主要注意的就是推送达到事件、推送点击事件,这两个事件内写业务了。
最后,这里吐槽一下华为的推送,华为推送在引入的时候要引入两个包:
implementation 'com.huawei.android.hms:base:2.6.3.306' // 华为推送 implementation 'com.huawei.android.hms:push:2.6.3.306' // 华为推送
还不只,还得根据华为文档去找一个agent模块,将这个模块加入到自己的package中,跟引入的包对接,(咋你这个推送的画风就那么泥石流呢!)