您的位置:首页 > 移动开发 > Android开发

第三方推送(小米华为友盟)接入实践

2017-03-21 19:39 429 查看

0,前言

这几天接了一下友盟,小米,华为三方的推送。

总的流程下来,小米的api是最友好的,华为的文档和demo有点脱节。这两个推送在特定的手机上都挺稳定的的。

友盟的就有点麻烦,过程中遇到几个问题

1,接入友盟之后,APK方法数超过64K了

对于这种超大的第三方库无爱 : (

是这样解决的。

android {
compileSdkVersion 21
buildToolsVersion "21.1.0"

defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...

// Enabling multidex support.
multiDexEnabled true
}
...
}

dependencies {
compile 'com.android.support:multidex:1.0.0'
}
MultiDex.install(getTargetContext());


https://developer.android.com/studio/build/multidex.html

2,第二个问题是要自定义点击通知栏要调整到特定页面,需要重写

@Override
public void dealWithNotificationMessage(Context context, UMessage msg){
if ( msg.extra == null) {
super.dealWithNotificationMessage(context, msg);
return;
}
Notification notification = new Notification.Builder(context)
.setContentTitle(msg.title)
.setContentText(msg.text)
.setSmallIcon(R.drawable.share_default_logo)
.build();
notification.flags |= FLAG_AUTO_CANCEL;
notification.defaults = DEFAULT_ALL;
notification.ledARGB = Color.BLUE;
notification.ledOnMS = 5000;
((NotificationManager) SeeYouApp.getInstance().getSystemService(NOTIFICATION_SERVICE)
).notify(0, notification);
}


3,要识别一下友盟的channel进程,允许它注册。

4,测试

测试起来很麻烦,因为杀应用,如果我们原有的进程没有被杀,那么友盟的推送就不会被杀,我们的进程被杀,友盟也被杀。这叫我怎么测…后来同事提醒,可以相互唤醒。

所以就是安装一个友盟的官方的App,然后设置允许相互唤醒(这个各个手机的设置都不同,在设置里面找相互唤醒类似的字眼)

后台那边就是判断一下原有通道是不是通的,如果不通就走第三方渠道。

之前一直在测弱网络,所以我以为会有一个心跳的误差。其实杀APP,后台立刻就能知道长连接断了,因为socket断了,系统会发eof(从抓包上看就是FIN)。

5,其他有的没的

华为只支持企业级应用,所以我是用公司账号注册两个app,去测试的。华为客户端这边的识别就直接是包名,要有手机卡,手机必须是华为手机才能推到。

小米接入小米推送之后,手动杀进程居然只杀了前台应用,得去应用里面强制关闭。没接入之前我记得手动杀进程是什么都不剩的,也许是官方推送保活福利吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android