
APP集成海外厂商通道攻略
了解了厂商通道与FCM通道的区别后,厂商通道的优势显而易见了。为了提高APP通知的送达率,有必要集成厂商通道来弥补FCM通道的不足。在此,我们整理了各个厂商通道在海外的支持情况。

极光推送SDK已经对各大厂商的推送SDK进行了封装,可方便开发者快速集成厂商通道,无需单独实现各个通道的集成。同时,也支持开发者在后台统一管理推送策略、查看推送数据报表等。
由于只有小米和OPPO在海外与国内的支持情况有所区别。下面着重对这两个厂商的海外通道做下说明。
1.运营平台
两个厂商的开发者开放平台,都可以通过同一个平台链接进行国内与国际版的切换。
a.小米账号是互通的,但新建的应用做了国内与海外的区分,当切换到英语时,新建应用会先同步到海外的应用市场。如此,才能使用海外版SDK进行消息推送。但海外版SDK用在国内设备上运行时,则会显示注册失败。


当通过运营平台进行消息推送时,需要严格根据设备的归属地。简单总结为:
●如果目标用户是国内用户,需要通过国内推送运营平台发送;
●如果目标用户是海外用户,需要通过海外推送运营平台发送;
●如果目标用户既包含国内用户又包含海外用户,可以选择国内&国外推送运营平台同时推送该消息,用户不会重复收到;
b.OPPO的账号可登录海外版,但信息则不互通,需要重新注册开发者信息,注册时需要提供身份证明、国际VISA银行卡。进行语言切换时,会自动退出当前账号,然后重新登录。需要注意的是,必须注册企业开发者,才可以使用推送功能。
当通过运营平台进行消息推送时,也需要根据设备的归属地,使用不同的平台进行推送。使用国内推送运营平台发送的消息,只有国内设备可以收到;使用海外推送运营平台发送的消息,只有海外设备可以收到;
2.SDK集成
a.小米SDK集成区分国内版本和海外版本,两个版本SDK无法同时共存于同一个APP。同时集成,在编译时会有比较多的冲突。
虽然无法同时集成,但开发时所使用的API是相同的,即当开发者想同时支持国内和海外时,直接替换SDK即可,有一点需要注意的是,如果集成的海外版SDK,则必须增加先通过MiPushClient.setRegion接口设置数据存储区域,可选区域如下:
public enum Region {
Global,//新加坡
Europe,//欧洲德国法兰克福
Russia,//俄罗斯莫斯科
India//印度孟买
}
然后再调用MiPushClient.registerPush接口注册小米推送服务。否则会抛出IllegalArgumentException异常。
b.对于OPPO,适配海外通道则比较简单。SDK则无需任何更改,国内设备与海外设备通用。
3.后台服务开发
在后台服务适配方面,两个厂商均无需修改服务端SDK,需要做的适配工作相同,根据设备的归属地,使用不同的api地址进行消息推送。在获取设备归属地方面略有差异。
a.小米提供了单独的api接口用来查询设备归属地。
b.OPPO则可以根据regid来判断:regid的前缀有地区缩写,CN,IN,RU等;可区分国内与海外用户。但在官方文档上没有找到相关说明,该信息通过官方的技术支持了解到,实际验证也确实如此。
服务端根据国内与海外用户,使用不同的域名进行推送。
4.通知送达效果
a.小米厂商通道送达效果与国内保持一致,即便强行停止应用后,仍然可以正常收到推送消息。
b.OPPO厂商通道,我们通过OPPO官方技术支持了解到:"在海外系统上增加了厂商的长连接通道,支持通过厂商来发送通知消息。而在通知展示方面,则沿用了谷歌FCM的展示逻辑,将收到的消息转给FCM,因此会有与FCM通道会一样的问题,即“强行停止”APP后,无法继续收到通知"。
对于这一说法,我们在拿到海外版真机后做了验证,通过“强行停止”APP后,是可以正常收到通知并展示的,应该是厂商已经完成了优化。
5.APP渠道分发
a.由于小米厂商对于国内和海外的设备进行了版本区分,国内版SDK只能安装在国内设备,海外版SDK只能安装在海外设备,因此,开发者在分发应用时,需要进行多渠道分发,国内应用市场使用国内版本的SDK。Google Play上使用海外版本的SDK。
b.由于OPPO 厂商SDK不区分国内外版本,可以通用。因此,不需要针对国内外的环境而对APP进行不同的渠道分发。但需要注意的是,如果海外的应用没有国内主体并且上架应用商店,那么必须要在OPPO海外应用商店上架才能正常使用推送。海外应用商店支持的国家有:印度、印度尼西亚、泰国、越南、菲律宾、马来西亚、中国台湾。
小结:
极光目前已全面兼容支持海外厂商通道,使用极光推送,您可以免去复杂的集成过程,一键集成厂商SDK,提高集成效率。详见 http://www.jiguang.cn