MobPush集成心得

简介:

推送送是现在大部分应用都拥有的一项功能,使用推送的目的就是为了让用户接收到最新的消息以及提醒等,由于业务需求,所以了解下市面较受欢迎的SDK,今天就来总结下集成Mob的MobPush和环信的极光推送心得。

  1. 极光推送
    集成准备:

注册极光开发者账号添加应用获取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);
            }
        }
    }
  1. 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的产品有一定的了解,完全的免费还提供很好的技术支持,这个确实是挺好的,好像市面上没有哪家了可以做到产品完全免费还提供优质的技术支持服务了,也挺好奇他们是怎么赢利的。

极光推送:极光推送也有免费的,但是免费的会有很多的限制,无法查看数据,不会提供技术支持等。这个也很正常,毕竟人家也是辛苦的开发出这款产品。

本人是位菜鸟,这也是我第一次尝试着写这样的相关博客,初学者或是感觉对你有用的你可以看一下,希望我的总结能给大家一点帮助。如若是大神的话就别喷我了,若有什么不足的地方,各位大神看到了还请多多指教。

目录
相关文章
|
5月前
|
缓存 Java 索引
|
9月前
|
机器学习/深度学习 人工智能 PyTorch
从零开始:如何训练自己的AI模型
### 从零开始:如何训练自己的AI模型 训练AI模型如同培养新生儿,需耐心与技巧。首先明确目标(如图像识别、自然语言处理),选择框架(TensorFlow、PyTorch)。接着收集并预处理数据,确保多样性和准确性。然后设计模型结构,如卷积神经网络(CNN),并通过代码实现训练。训练后评估模型性能,调优以避免过拟合。最后部署模型至实际应用。通过猫狗分类器案例,掌握关键步骤和常见问题。训练AI模型是不断迭代优化的过程,实践才能真正掌握精髓。
|
机器学习/深度学习 算法 安全
基于YOLOv8深度学习的危险区域人员闯入检测与报警系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、区域闯入
基于YOLOv8深度学习的危险区域人员闯入检测与报警系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、区域闯入
|
SQL 监控 关系型数据库
PG数据库释放闲置连接
PG数据库释放闲置连接
664 0
|
区块链 数据安全/隐私保护 存储
NFT数字藏品系统开发(参考模板)
数字藏品是与特定作品、艺术品相关联的加密数字收藏品,具备经济价值、文化传播、身份认同、原创激励和未来权益。它们在区块链上作为独特的数字资产交易,促进传统艺术品传播,增强收藏者身份认同,保护创作者权益,并可能成为元宇宙中数字世界与现实世界的桥梁。数字藏品已广泛应用于多个行业,预示中国市场的蓬勃发展。
|
存储 消息中间件 缓存
史上最全最详细的Java架构师成长路径图,程序员必备
从新手码农到高级架构师,要经过几步?要多努力,才能成为为人倚重的技术专家?本文将为你带来一张程序员发展路径图,但你需要知道的是,天下没有普适的道理,具体问题还需具体分析,实践才能出真知。
7329 0
|
缓存 网络协议 前端开发
浏览器原理 04 # 导航流程:从输入URL到页面展示,这中间发生了什么?
浏览器原理 04 # 导航流程:从输入URL到页面展示,这中间发生了什么?
391 0
浏览器原理 04 # 导航流程:从输入URL到页面展示,这中间发生了什么?
|
Python
python安装scikit-image时出现错误:Operation not permitted
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/81168591 python安装scikit-image时出现错误:Operation not permitted 错误信息超级多,得有个十几二十页吧,我就不贴了。
2560 0
|
关系型数据库 应用服务中间件 PHP
Debian 下轻松实现 PHP 多版本共存
PHP7 的发布废弃了部分特性,一些程序或者插件当前不能很好的运行在 PHP7 上,因此如果服务器上能同时运行多个 PHP 的版本,就可以很好的解决过渡期的兼容性问题。在前面两篇文章中,我们介绍了如何在 Debian Stretch 中安装使用 PHP5,以及如何在Debian环境安装配置PHP 7.2。
2333 0