一、推送工具使用

我们在做安卓开发的时候,通常需要一些消息推送功能,我个人平时用的是极光推送,极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。极光推送客户端支持 Android, iOS 两个平台。

使用的时候我们可以先去官网看开发文档,我是在我的新闻客户端中引用了这个sdk,下载解压之后可以按照步骤做相应操作就可以了,个人感觉还是挺实用的。

自己按照源码重新做了一个简单的可接收消息的demo,

下面给出的是PushReceiver的代码:

public class PushReceiver extends BroadcastReceiver {private static final String TAG = "PushReceiver";@Overridepublic void onReceive(Context context, Intent intent) {Bundle bundle = intent.getExtras();Log.d(TAG, "onReceive - " + intent.getAction());if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {System.out.println("收到了自定义消息。消息内容是:"+ bundle.getString(JPushInterface.EXTRA_MESSAGE));// 自定义消息不会展示在通知栏,完全要开发者写代码去处理} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {System.out.println("收到了通知");// 在这里可以做些统计,或者做些其他工作} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {System.out.println("用户点击打开了通知");// 在这里可以自己写代码去定义用户点击后的行为String extra = bundle.getString(JPushInterface.EXTRA_EXTRA);System.out.println("附加信息:" + extra);try {JSONObject jo = new JSONObject(extra);String url = jo.getString("url");System.out.println("url:" + url);// 跳浏览器加载网页} catch (JSONException e) {e.printStackTrace();}}}}

当然,这段代码用了一个自定义消息的功能,可以推送json数据,不只是推送标题消息哦!所有需要客户端被动接收信息的功能模块,都可以用推送实现

然后用JSONObject jo = new JSONObject(extra);
String url = jo.getString("url");来解析,当然我们还可以用Gson来解析json数据。

二、推送原理简介

-xmpp 是一种基于TCP/IP的协议, 这种协议更适合消息发送。七层协议。

事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。关于XMPP协议我在上篇博文中已经介绍,大家可以参考下文章:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html
- socket 套接字, 发送和接收网络请求。这个我在大三的时候上网络编程的时候学过,但是当时没有用心学额

我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

- 长连接 keep-alive, 服务器基于长连接找到设备,发送消息
-心跳包 , 客户端会定时(30秒一次)向服务器发送一段极短的数据,作为心跳包, 服务器定时收到心跳,证明客户端活着,才会发消息.否则将消息保存起来,等客户端活了之后(重新连接),重新发送.

转载于:https://www.cnblogs.com/xiaowangba/p/6314914.html

安卓消息推送解决方案相关推荐

  1. @开发者:个推小程序消息推送解决方案来了

    随着小程序技术和应用场景的不断完善,越来越多的开发者搭建了小程序平台,为用户带来更"轻量"的服务.在小程序用户迅猛增长的同时,开发者对于小程序用户精细化触达的需求也愈加强烈.近日, ...

  2. 关于Android安卓APP保活 - 安卓消息推送详解 - 安卓端外推送离线推送

    转自:http://zhangtielei.com/posts/blog-android-push.html 说Android端外推送比较烦,实际有两层意思:首先是说实现上比较麻烦,至今业界也没有找到 ...

  3. Uni-app框架UniPush安卓消息推送模拟配置

    uni-push消息推送配置和实战 Uni-app消息推送 一.介绍 二.整体架构 三.消息类型 四.推送模拟配置 第一步:开通UniPush推送服务 第二步:UniPush配置 第三步:HBuild ...

  4. Android消息推送 解决方案

    前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 推送消息截图 今天,我将全面介绍Android中实现消息推送的7种主流解 ...

  5. Carson带你学Android:全面解析Android消息推送解决方案

    前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 今天,我将全面介绍Android中实现消息推送的7种主流解决方案 Car ...

  6. 【转】手机锁屏收不到消息推送解决方案

    问题描述 部分 Android 手机系统在黑屏待机后自动清理后台运行的软件,这样影响了应用正常接收新的消息,需要将应用设置为后台运行应用.各类机型的设置说明如下: 华为 Mate9 手机设置说明 华为 ...

  7. uniapp安卓消息推送

    1.打开uniapp项目 2.点击上图配置选项,进入一下界面 (1)应用名称最好用当前应用的名称 (2)Android 包名:点击这个按钮,就会跳转到,点击会下来选择的.且后面自定义基座的包名要和这个 ...

  8. 安卓app如何利用MQTT实现安卓消息推送

    https://www.jianshu.com/p/fce737cf2e46?utm_source=oschina-app

  9. 移动推送:灵活、高效、精准的App消息推送

    概要:移动互联网时代,手机App逐步成为一种生活方式.移动推送则是App主动触达用户的重要渠道,它可以推送消息通知,引导用户点击去往App,从而增强用户黏性,让潜在用户变成真爱粉.但由于安卓市场缺失系 ...

最新文章

  1. 跨域解决方案一:使用CORS实现跨域
  2. Spring MVC 向页面传值-Map、Model和ModelMap
  3. c# winform笔记
  4. java map 不存在的key_java – HashMap表示即使它确实存在,Key也不存在
  5. Android应用开发——service连接泄露异常:android.app.ServiceConnectionLeaked: that was originally bound here
  6. Linux基本目录结构
  7. (王道408考研操作系统)第三章内存管理-第一节6-2:非连续分配管理方式之基本分页存储管理之基本地址变换机构
  8. 【iCore3双核心板】发布 iCore3 应用开发平台硬件原理图
  9. hsv封装好的调试工具类
  10. 字符串相加和valueof_Java字符串valueOf()示例
  11. 乒乓球单循环赛_乒乓球单循环赛积分表(比赛规则、对比表)
  12. kali-TheFatRat木马生成工具安装及简单使用
  13. Python4Delphi 安装使用注意
  14. MySQL更新数据语句
  15. java 计算百分比_java前后台计算百分比(保留2位小数)
  16. 怎么换头像啊。。。。。
  17. 【AirPlay2开发】协议整合
  18. linux安装百度网盘rpm,Deepin、Ubuntu下安装百度网盘baidunetdisk_linux_2.0.1.rpm的方法
  19. FLOTHERM 10.1软件热分析仿真基础培训 风冷 水冷 自冷视频教程
  20. NCBI数据下载-sra

热门文章

  1. 公司-弹出页回调之后加载页面
  2. oracle ohs是什么,怎么更改OHS端口为80
  3. 中文论文万能句型_SCI 论文写作万能句型汇总(很实用)
  4. 简书 java jvm_JVM介绍
  5. aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
  6. 从SeekFree的Gitee开源库建立通用MM32开发模板
  7. ESP32-S的UART2的初始化需要注意的问题
  8. 智能车竞赛,AI视觉组赛题浅析
  9. echarts中graphic_使用Pyecharts进行奥运会可视化分析!
  10. verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser