Android开发记录18-集成推送服务的一点说明

关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考量以下几个要素:

1、是否收费,如何收费?

2、推送内容是是什么(是否包含通知、消息、富媒体等等)

3、稳定性、及时性如何?

4、集成难度是否简单

5、支持平台有哪些(主流Android、IOS)

6、服务端支持语言(Java、C#、PHP、Python等)

下面笔者例举国内主要的一些推送服务:

来自Devstore的统计,共收录了国内21家推送服务,分别是(按关注度排列):

1.个推(个信互动(北京)网络科技有限公司http://www.igetui.com/)

2.百度云推送(百度http://developer.baidu.com/cloud/push)

3.极光推送(深圳市和讯华谷信息技术有限公司https://www.jpush.cn/)

4.友盟推送(友盟http://www.umeng.com/push)

5.小米推送(小米http://dev.xiaomi.com/doc/?page_id=1670)

6.腾讯信鸽推送(腾讯公司http://xg.qq.com/)

7.Bmob推送(广州市比目网络科技有限公司http://www.bmob.cn/)

8.云巴推送(深圳市微智云科技有限公司http://www.yunba.io/)

9.华为推送(华为公司http://developer.huawei.com/push)

10.智游推送(北京智游网安科技有限公司http://www.zypush.com/)

11.盛大云推送(盛大网络http://www.grandcloud.cn/product/push)

12.原子推送(原子技术有限公司http://www.atom14.com/)

13.魔桥推送(魔桥http://www.mobbridge.com/)

14.魔泊网推送(魔泊网http://helpdocs.sturgeon.mopaas.com/helpdocs/_push.html)

15.有推推送(中国移动通信http://dev.10086.cn/aoi/index.jsp)

16.WeCloud(WeCloud http://www.wecloud.io/)

17.Learn Cloud推送(美味书签信息技术有限公司https://cn.avoscloud.com/)

18.亚马逊推送(亚马逊公司http://aws.amazon.com/cn/sns/)

19.魔方推送(魔方公司http://www.imofan.com/)

20.语盒团推送(语盒团公司http://www.yuchteam.com/)

21.移动消息推送

开发者可以针对产品的需求,来对比选择适合自己应用的推送服务。

笔者这里选择了“极光推送”,它是部分收费的,收费模式各位可以到官网查看;支持推送的内容有通知、消息、富媒体,稳定性好、能及时到达、提供服务API、支持Android、iOS平台,服务端支持Java、PHP、Python、C#、Ruby、Node.js。

集成极光推送笔者这里也不详细写,主要提几点:

1、使用Portal来进行测试

Portal是服务提供的传送门,我们可以使用控制台来进行推送测试,实际应用时一般是根据推送服务提供的服务端API来实现定制推送。

极光Portal如下:

2、通知与消息的区别

通知就是可以再通知栏显示提醒用户的信息,而消息不会在通知栏显示,业务逻辑可以完全有开发者来定。

3、推送对象

可以分为:

广播:会把通知无区别的推送到每个人身上。

设置标签:这一般用于群组推送。

设置别名:适用于单播,根据客户端设置的别名来推送。

设置注册ID:适用于单播推送,指定推送给某一个人,可以使注册过的用户ID,主要用来区分。

4、自定义通知栏样式、附加字段的作用

我们有时候可能不想直接用Android原生的通知栏样式,如果服务提供相应的API的话,我们可以通过自定义布局来达到这个目的。极光这里提供了以下方法:

 // 自定义Notification样式CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(getApplicationContext(),R.layout.customer_notitfication_layout, R.id.icon, R.id.title,R.id.text);builder.layoutIconDrawable = R.drawable.ic_launcher;builder.developerArg0 = "developerArg2";JPushInterface.setPushNotificationBuilder(2, builder);Toast.makeText(getApplicationContext(), "Custom Builder - 2",Toast.LENGTH_SHORT).show();

我们只需要指定通知栏编号,下次推送通知的时候就会以自定义的通知栏样式来显示。

这里还有一个附加字段,我们有时候可能需要根据推送的不同消息来实现跳转不同的页面,这时候就可能需要用到附加字段了,我们在Broadcast Receiver来接受推送下来的消息,解析附加字段内容,来达到我们的目的。

代码示例:

package com.infzm.daily.know.receiver;import org.json.JSONException;
import org.json.JSONObject;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import cn.jpush.android.api.JPushInterface;import com.infzm.daily.know.ArticleDetailActivity;
import com.infzm.daily.know.MainActivity;
import com.infzm.daily.know.utils.LogUtils;public class PushReceiver extends BroadcastReceiver {private static final String TAG = "JPush";@Overridepublic void onReceive(Context context, Intent intent) {Bundle bundle = intent.getExtras();LogUtils.logi(TAG, "[PushReceiver] onReceive - " + intent.getAction() + ", extras: "+ printBundle(bundle)); if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);LogUtils.logi(TAG, "[PushReceiver] 接收Registeration Id : " + regId);} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {LogUtils.logi(TAG, "[PushReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));}else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {LogUtils.logi(TAG, "[PushReceiver] 接收到推送下来的通知");int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);LogUtils.logi(TAG, "[PushReceiver] 接收到推送下来的通知的ID: " + notifactionId);} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {LogUtils.logi(TAG, "[PushReceiver] 用户点击打开了通知");String type = bundle.getString(JPushInterface.EXTRA_EXTRA);LogUtils.loge(TAG, "type:" + type);try {JSONObject jsonObject = new JSONObject(type);String str = jsonObject.getString("key");if (str.equals("1")) {//打开自定义的ActivityIntent i = new Intent(context, MainActivity.class);bundle.putInt("index", 1);i.putExtras(bundle);//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );context.startActivity(i);}} catch (JSONException e) {e.printStackTrace();}} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {LogUtils.logi(TAG, "[PushReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));//在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等..} else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);LogUtils.logi(TAG, "[PushReceiver]" + intent.getAction() +" connected state change to "+connected);} else {LogUtils.logi(TAG, "[PushReceiver] Unhandled intent - " + intent.getAction());}}// 打印所有的 intent extra 数据private static String printBundle(Bundle bundle) {StringBuilder sb = new StringBuilder();for (String key : bundle.keySet()) {if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));}else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));} else {sb.append("\nkey:" + key + ", value:" + bundle.getString(key));}}return sb.toString();}}

Android记录18-集成极光推送的一点说明相关推荐

  1. 极光推送 简书android,(Android)react-native集成极光推送

    在Android中使用reactnative集成极光推送步骤如下: (1)在AndroidManifest中声明网络权限,获取包名到极光推送官网添加应用,获取AppKey,该key需要注册到应用中以获 ...

  2. Android第三方SDK集成 —— 极光推送

    前言: 本文前篇,可以帮助朋友们快速集成极光推送.本文后篇,是我自己项目实践的一些总结和心得,应该对读者们还是很有参考价值的,相信读完这篇文章,你会对极光推送有更加深入的理解,而不仅仅只是会集成而已. ...

  3. 集成极光推送的一点说明

    http://blog.csdn.net/wwj_748/article/details/41867467 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要 ...

  4. Android 10分钟集成极光推送

    1.首先申请key https://www.jiguang.cn/accounts/login/form 2.app build.gradle添加jar依赖 compile 'cn.jiguang.s ...

  5. Java中集成极光推送实现给Android提送消息通知(附代码下载)

    场景 Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  6. Android集成极光推送踩坑(二)升级篇

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/74133186 本文作者:[默寒的博客] 前言 前段时间针对集成极光推送写了篇文章( Andr ...

  7. 极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区

    集成极光推送 1,首先肯定是注册,添加应用 2,开始自动集成比手动集成简单第一步 在 build.gradle defaultConfig { multiDexEnabledtrue applicat ...

  8. uniapp轻松集成极光推送自定义消息+通知 Android极光 IOS极光 两行代码集成极光SDK

    ###[前言] 极光推送(JPush)在为开发者提供基础推送服务的同时,还提供了用户精准标签.用户分群.地理围栏.应用内消息.智能发送策略.智能促活等服务能力,可有效提升消息的送达率.展示率和点击率, ...

  9. Android之集成极光推送

    安卓端集成极光推送是很常见的,极光推送的简单高效性适合很多想要集成推送的APP,如果你要自己装逼,也可以自己写推送,只要想做都是可以的. 第一步.Gradle配置(Module的build.gradl ...

  10. React-Native集成极光推送(Android和IOS)

    React-Native集成极光推送的具体流程如下: 本文选取的是极光官方维护的react-native推送插件,github地址:https://github.com/jpush/jpush-rea ...

最新文章

  1. 计算图像的标准差与方差(meanStdDev() 函数)
  2. 数据库:B+树索引和Hash索引得区别
  3. 调色板栅格数据使用GDAL时注意
  4. HDFS常用Shell命令
  5. jackson 读取多文件_Spring Boot系列之读取配置
  6. 3.7亿条保单数据怎么分析?这个大数据平台有绝招
  7. 一、kafka安装下载与kafka初步应用
  8. 新东方总裁俞敏洪在北京大学2008年开学典礼上的发言
  9. SpringBoot2.x填坑(一):使用CROS解决跨域并解决swagger 访问不了问题
  10. html svg 线条动画,线条之美,玩转 SVG 线条动画
  11. 共码未来 | 盘点 2022 Google 谷歌开发者大会多重亮点!
  12. vml时序表_VML代码分析是怎么分析的
  13. Web前端大作业——城旅游景点介绍(HTML+CSS+JavaScript) html旅游网站设计与实现
  14. 亚马逊云科技云知识总结
  15. delphi 多线程3
  16. Apache Log4j2漏洞复现
  17. 铁死亡(Ferroptosis )最新研究进展(2022年)
  18. [python]WindowsError的错误代码详解
  19. ubuntu11.04下Discuz论坛的安装
  20. Jupiter notebook如何改变绘图大小

热门文章

  1. Common Digester学习
  2. 用Python制作温度换算模块
  3. linux系统进入管理员命令行,电脑如何进入管理员命令提示符
  4. FPGA之通信算法工程师面试题3
  5. java技术栈是什么_java技术栈必学有哪些?
  6. Eclipse 设置注释模板
  7. Oracle数据库进行简单优化,Oracle数据库性能优化
  8. 海康威视摄像头-chrome谷歌浏览器高版本局域网下海康摄像头web网页实时播放
  9. Opencv,imread()读取BGR格式文件转换与RGB格式的相互转换
  10. Android个人简历自我评价,Android开发工程师岗位个人简历自我评价范文