1. 主流的第三方推送平台分类
- 手机厂商类:小米推送、华为推送。
- 第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
- BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送
2. 对比其他推送方式的特点
其他推送方式还有:C2DM、轮询、SMS、MQTT协议、XMPP协议等等,相对于这些推送方式,第三方推送方式的特点分别是:
- 优点:
- 成本低
上述的推送大多数是免费的,假如自己实现则消耗过多资源(开发成本和后台管理、统计成本) - 消息到达率高
如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家的App推送服务被杀死了,那么只要用户打开了其他集成该推送服务的App,你家的推送就能到达用户
- 成本低
- 缺点
- 安全性低
使用别人的服务器,所以你懂的。 - 服务会被杀死
由于Android系统的机制,后台推送 Service 会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。
- 安全性低
3.1 手机厂商推送
请记住一个潜规则:操作系统是不会杀死属于自己品牌的推送服务。
- 手机厂商的推送服务在自家的手机上属于系统级别的服务,这意味着系统不会杀死自家的推送服务
- 比如说,Android原生系统是不会杀死C2DM消息推送服务,MIUI系统是不会杀死小米的推送服务。
3.2 第三方平台类
请记住一个规则:推送系统会共享一条推送渠道
- 这意味着假设你接入了友盟推送,而恰好今日头条也接入了友盟。
- 有一天你的App被杀死了,但这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。
所以说,关于如何选择第三方平台类的推送,推送平台的规模效应就很重要了。
那如何得知他们的规模和市场份额呢?
所以为了推送的高到达率,很多应用都集成了不同厂商的推送服务。但是这样的开发时间太大了。友盟就基于这个需求,推出了最新的推送服务友盟聚合推送,其中同步集合和小米、华为、魅族的推送,下面我们就来讲一下,怎么集成友盟聚合推送。
一、准备工作
1、进入友盟官方网站点击打开友盟官方链接,在友盟平台注册一个账号
2、在友盟官网进入产品,选择消息推送(U-PUSH)
3、进入SDK下载页面,下载对应的SDK
我这里讲解的是安卓的集成,下载的是安卓的SDK
4、解压下载下来的压缩包,文件列表如下:
5、登录了用户后打开点击打开链接进入立即使用,创建一个应用,得到应用对应的信息
二、AndroidStudio完整集成友盟聚合推送
1、新建一个Android工程项目
2、复制common文件夹下的umeng-common-1.5.1.jar和thirdparties文件夹下的utdid4all-1.1.5.3_proguard.jar这两个jar包到项目app的libs文件夹下。
3、把push作为一个分支添加到项目中
4、点击项目源路径下的settiongs.gradle把分支添加到项目中,include ':app',':push',打开app路径下的build.gradle,在文件的dependencies{implementation project(':push')}添加分支的依赖。
5、新建一个类MyApplication继承Application,同时在AndroidManifest.xml的application下添加代码:android:name=".MyApplication"配置使用我们自定义的Application。并且在application节点下加入如下代码:
-
<meta-data
-
android:name=
"UMENG_APPKEY"
-
android:value=
"填入你创建应用后,友盟给你的值"/>
-
<meta-data
-
android:name=
"UMENG_MESSAGE_SECRET"
-
android:value=
"填入你创建应用后,友盟给你的值" />
并且在AndroidManifest.xml清单文件下添加需要用到的权限如下:
-
<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.INTERNET" />
-
<uses-permission android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"/>
-
<uses-permission android:name=
"android.permission.READ_EXTERNAL_STORAGE"/>
-
<uses-permission android:name=
"android.permission.GET_TASKS" />
6、在MyApplication的onCreate()方法下初始化和注册友盟聚合推送
-
UMConfigure.init(
this,UMConfigure.DEVICE_TYPE_PHONE,
"你在友盟申请的UMENG_MESSAGE_SECRET");
-
PushAgent mPushAgent = PushAgent.getInstance(
this);
-
mPushAgent.setResourcePackageName(
"你应用的applicationId");
-
mPushAgent.register(
new IUmengRegisterCallback() {
-
@Override
-
public void onSuccess(String s) {
-
Log.e(
"获取token成功:",s);
-
}
-
-
@Override
-
public void onFailure(String s, String s1) {
-
Log.e(
"获取token失败:",s+
"且s1="+s1);
-
}
-
});
7、使用一个可以联网的手机或模拟器运行项目。查看log打印台的消息,看是否获取token成功,如果是获取token失败:-11 accs bindapp error! 那么检测填写的包名是否和你在友盟平台创建的应用包名一致,如果一致,那么查看填写的appKey和message_sectet是否正确。
8、如果是获取token成功:AnEsKx52L4rULIYSjLkF7qU55_rv2qPTZsgbifcrxvcq 后面的这串字符是当前接入的设备号。把这段设备号复制下来。在U-PUSH的管理平台里添加一个设备用于测试
点击进入对应的项目选中测试模式
添加测试设备。设备号就是刚刚复制的那一串。
9、编辑推送信息进行推送功能测试。正常到这里就集成完成了。
1. 主流的第三方推送平台分类
- 手机厂商类:小米推送、华为推送。
- 第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
- BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送
2. 对比其他推送方式的特点
其他推送方式还有:C2DM、轮询、SMS、MQTT协议、XMPP协议等等,相对于这些推送方式,第三方推送方式的特点分别是:
- 优点:
- 成本低
上述的推送大多数是免费的,假如自己实现则消耗过多资源(开发成本和后台管理、统计成本) - 消息到达率高
如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家的App推送服务被杀死了,那么只要用户打开了其他集成该推送服务的App,你家的推送就能到达用户
- 成本低
- 缺点
- 安全性低
使用别人的服务器,所以你懂的。 - 服务会被杀死
由于Android系统的机制,后台推送 Service 会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。
- 安全性低
3.1 手机厂商推送
请记住一个潜规则:操作系统是不会杀死属于自己品牌的推送服务。
- 手机厂商的推送服务在自家的手机上属于系统级别的服务,这意味着系统不会杀死自家的推送服务
- 比如说,Android原生系统是不会杀死C2DM消息推送服务,MIUI系统是不会杀死小米的推送服务。
3.2 第三方平台类
请记住一个规则:推送系统会共享一条推送渠道
- 这意味着假设你接入了友盟推送,而恰好今日头条也接入了友盟。
- 有一天你的App被杀死了,但这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。
所以说,关于如何选择第三方平台类的推送,推送平台的规模效应就很重要了。
那如何得知他们的规模和市场份额呢?
所以为了推送的高到达率,很多应用都集成了不同厂商的推送服务。但是这样的开发时间太大了。友盟就基于这个需求,推出了最新的推送服务友盟聚合推送,其中同步集合和小米、华为、魅族的推送,下面我们就来讲一下,怎么集成友盟聚合推送。
一、准备工作
1、进入友盟官方网站点击打开友盟官方链接,在友盟平台注册一个账号
2、在友盟官网进入产品,选择消息推送(U-PUSH)
3、进入SDK下载页面,下载对应的SDK
我这里讲解的是安卓的集成,下载的是安卓的SDK
4、解压下载下来的压缩包,文件列表如下:
5、登录了用户后打开点击打开链接进入立即使用,创建一个应用,得到应用对应的信息
二、AndroidStudio完整集成友盟聚合推送
1、新建一个Android工程项目
2、复制common文件夹下的umeng-common-1.5.1.jar和thirdparties文件夹下的utdid4all-1.1.5.3_proguard.jar这两个jar包到项目app的libs文件夹下。
3、把push作为一个分支添加到项目中
4、点击项目源路径下的settiongs.gradle把分支添加到项目中,include ':app',':push',打开app路径下的build.gradle,在文件的dependencies{implementation project(':push')}添加分支的依赖。
5、新建一个类MyApplication继承Application,同时在AndroidManifest.xml的application下添加代码:android:name=".MyApplication"配置使用我们自定义的Application。并且在application节点下加入如下代码:
-
<meta-data
-
android:name=
"UMENG_APPKEY"
-
android:value=
"填入你创建应用后,友盟给你的值"/>
-
<meta-data
-
android:name=
"UMENG_MESSAGE_SECRET"
-
android:value=
"填入你创建应用后,友盟给你的值" />
并且在AndroidManifest.xml清单文件下添加需要用到的权限如下:
-
<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.INTERNET" />
-
<uses-permission android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"/>
-
<uses-permission android:name=
"android.permission.READ_EXTERNAL_STORAGE"/>
-
<uses-permission android:name=
"android.permission.GET_TASKS" />
6、在MyApplication的onCreate()方法下初始化和注册友盟聚合推送
-
UMConfigure.init(
this,UMConfigure.DEVICE_TYPE_PHONE,
"你在友盟申请的UMENG_MESSAGE_SECRET");
-
PushAgent mPushAgent = PushAgent.getInstance(
this);
-
mPushAgent.setResourcePackageName(
"你应用的applicationId");
-
mPushAgent.register(
new IUmengRegisterCallback() {
-
@Override
-
public void onSuccess(String s) {
-
Log.e(
"获取token成功:",s);
-
}
-
-
@Override
-
public void onFailure(String s, String s1) {
-
Log.e(
"获取token失败:",s+
"且s1="+s1);
-
}
-
});
7、使用一个可以联网的手机或模拟器运行项目。查看log打印台的消息,看是否获取token成功,如果是获取token失败:-11 accs bindapp error! 那么检测填写的包名是否和你在友盟平台创建的应用包名一致,如果一致,那么查看填写的appKey和message_sectet是否正确。
8、如果是获取token成功:AnEsKx52L4rULIYSjLkF7qU55_rv2qPTZsgbifcrxvcq 后面的这串字符是当前接入的设备号。把这段设备号复制下来。在U-PUSH的管理平台里添加一个设备用于测试
点击进入对应的项目选中测试模式
添加测试设备。设备号就是刚刚复制的那一串。
9、编辑推送信息进行推送功能测试。正常到这里就集成完成了。