推送送是现在大部分应用都拥有的一项功能,使用推送的目的就是为了让用户接收到最新的消息以及提醒等,由于业务需求,所以了解下市面较受欢迎的SDK,今天就来总结下集成Mob的MobPush和环信的极光推送心得。
- 极光推送
集成准备:
注册极光开发者账号添加应用获取AppKey。
2.集成方式(两种)。
(1)jcenter 自动集成步骤:使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖;在AndroidManifest.xml中不需要添加任何JPush SDK 相关的配置,jcenter会自动导入。(个人倾向于这种集成方式)
(2)手动导入SDK开发包:配置 AndroidManifest.xml ,不过这部分的内容有点多,官方有很详细的说明,这里就不做赘述了 http://docs.jiguang.cn/jpush/client/Android/android_guide/。
(3)添加代码:使用通知
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
JPushInterface.setDebugMode(true);
JPushInterface.init(this);
}
}
//使用通知,请参考以下示例代码。
public class MyReceiver extends BroadcastReceiver {
private static final String TAG = "MyReceiver";
private NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
if (null == nm) {
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
Bundle bundle = intent.getExtras();
Logger.d(TAG, "onReceive - " + intent.getAction() + ", extras: " + AndroidUtil.printBundle(bundle));
if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
Logger.d(TAG, "JPush用户注册成功");
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
Logger.d(TAG, "接受到推送下来的自定义消息");
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals (intent.getAction())) {
Logger.d(TAG, "接受到推送下来的通知");
receivingNotification(context,bundle);
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals (intent.getAction())) {
Logger.d(TAG, "用户点击打开了通知");
openNotification(context,bundle);
} else {
Logger.d(TAG, "Unhandled intent - " + intent.getAction());
}
}
private void receivingNotification(Context context, Bundle bundle){
String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
Logger.d(TAG, " title : " + title);
String message = bundle.getString(JPushInterface.EXTRA_ALERT);
Logger.d(TAG, "message : " + message);
String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
Logger.d(TAG, "extras : " + extras);
}
private void openNotification(Context context, Bundle bundle){
String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
String myValue = "";
try {
JSONObject extrasJson = new JSONObject(extras);
myValue = extrasJson.optString("myKey");
} catch (Exception e) {
Logger.w(TAG, "Unexpected: extras is not a valid json", e);
return;
}
if (TYPE_THIS.equals(myValue)) {
Intent mIntent = new Intent(context, ThisActivity.class);
mIntent.putExtras(bundle);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mIntent);
} else if (TYPE_ANOTHER.equals(myValue)){
Intent mIntent = new Intent(context, AnotherActivity.class);
mIntent.putExtras(bundle);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mIntent);
}
}
}
- MobPush的集成
1.集成准备:
注册Mob开发者账号添加应用获取AppKey。
2.集成方式(两种)。
(1)非maven方式集成,手动导入SDK开发包:配置 AndroidManifest.xml ,这里就是直接的拷贝代码而已很简单,而且官方有很详细的说明,这里也就不做赘述了。 http://wiki.mob.com/mobpush%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E9%9D%9Emaven/
(2)maven方式集成。(这个配置起来超级方便,个人强烈推荐使用这种方式集成)。 http://wiki.mob.com/mobpush-for-android/
1.将下面的脚本添加到您的根模块build.gradle中:
buildscript {
// 添加MobSDK的maven地址
repositories {
maven {
url "http://mvn.mob.com/android"
}
}
dependencies {
// 注册MobSDK
classpath 'com.mob.sdk:MobSDK:+'
}
}
2.在使用MobPush模块的build.gradle中,添加MobSDK插件和扩展,如:
// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册MobPush的相关信息
MobSDK {
appKey "替换为mob官方申请的appkey"
appSecret "替换为mob官方申请的appkey对应的appSecret"
MobPush {}
}
添加代码:
初始化MobSDK
MobSDK.init(Activity.this);
MobPush推送的结果是通过监听消息回调给出,很简洁明了。
MobPush.addPushReceiver(new MobPushReceiver() {
@Override
public void onCustomMessageReceive(Context context, MobPushCustomMessage message) {
//接收自定义消息
}
@Override
public void onNotifyMessageReceive(Context context, MobPushNotifyMessage message) {
//接收通知消息
}
@Override
public void onNotifyMessageOpenedReceive(Context context, MobPushNotifyMessage message) {
//接收通知消息被点击事件
}
@Override
public void onTagsCallback(Context context, String[] tags, int operation, int errorCode) {
//接收tags的增改删查操作
}
@Override
public void onAliasCallback(Context context, String alias, int operation, int errorCode) {
//接收alias的增改删查操作
}
});
在退出已经设置了监听的界面时,调用移除监听接口:
MobPush.removePushReceiver(receiver);
至此,MobPush的配置和代码添加已经全部完成了,是不是有点过于方便简单快捷了呢。
个人心得
集成简易度对比:
个人觉得MobPush相对要简洁点,无论是后台注册创建应用还是代码添加都相对简洁一点,最贴心的是Mob在github开源了个Demo工程可以参考,这个非常好适合学习。 https://github.com/MobClub/MobPush-for-Android
SDK的体积:
MobPush的体积只有463k,极光推送的体积没有在其官网查询到。不过对于一个SDK就几百K大小是相当的小了,还没有一个资源图片大。
消息推送响应速度:
两款产品的响应速度都差不多,很快很及时,完全满足需求。
立体数据统计
Mob:用户量,推送数量,成功数量,点击数量,发送API调用数,详细的立体统计数据一览无余,有助于开发者实时监控并了解APP整体情况。
极光推送:由于这里集成的极光推送是免费试用的,无法查看具体的统计数据,查看统计数据是需要收费的。
免费试用
MobPush:开发者可免费使用推送服务和管理平台,而且Mob还会提供免费的技术服务,由于之前项目集成过Mob的SharesSDK用于分享和授权登录,所以对Mob的产品有一定的了解,完全的免费还提供很好的技术支持,这个确实是挺好的,好像市面上没有哪家了可以做到产品完全免费还提供优质的技术支持服务了,也挺好奇他们是怎么赢利的。
极光推送:极光推送也有免费的,但是免费的会有很多的限制,无法查看数据,不会提供技术支持等。这个也很正常,毕竟人家也是辛苦的开发出这款产品。
本人是位菜鸟,这也是我第一次尝试着写这样的相关博客,初学者或是感觉对你有用的你可以看一下,希望我的总结能给大家一点帮助。如若是大神的话就别喷我了,若有什么不足的地方,各位大神看到了还请多多指教。