前段时间做的项目需要添加一个推送的功能,现在应用里边加入推送也很普遍,所以查了查相关的资料,总结了以下几种方案!
【1】使用XMPP协议(Openfire + Spark + Smack)
简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。
优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。
缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。
这种方法需要服务端配合,需要整合openfire服务器,我们的服务端用的php,而这个需要用Java,客户端的代码也需要花一段时间去研究,由于时间有限并没有使用这种方法。不过在后来的开发中,想在程序里加入类似于微信的语音聊天的功能,所以对于这种方式又进行了一段开发,以后我会写一篇文章介绍一下。
【2】使用MQTT协议
简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考:http://mqtt.org/),且已有C++版的服务端组件rsmb。
【3】使用第三方推送服务
1.Google 云推送服务
鉴于国内的特殊情况,大部分国产手机都砍掉了Google服务,所以这种实现方式不太现实
2. 百度云推送服务(http://open.baidu.com/)
这个推送方案实施起来比较简单,直接集成相关的sdk,就可以实现推送,而且服务端的sdk有PHP,Java,Python版本,也可以直接通过url推送相关消息
3. 极光推送(https://www.jpush.cn/)
这个文档比较全,号称3分钟快速Demo,集成起来相对就简单多了
今天主要介绍一下第二种推送方案,之前查资料的时候没有找到百度云推送和极光推送,也是后来一个偶然的机会发现百度推出了云推送服务,今天总结一下,也希望以后各位朋友在开发中少走弯路,
1.首先下载rsmb包,并解压,找到对应服务器的文件夹,我的是linux_ia32,这个支持多种服务器
(下载地址:http://www.alphaworks.ibm.com/tech/rsmb,或者 http://pan.baidu.com/share/link?shareid=305439419&uk=137542493)
2.把目录及里面的文件上传到服务器上,(我的是linux服务器)进入到用命令行进入到该目录 然后自行 ./broker 如此这般便启动了推送服务,
3.准备推送页面(通过网页进行推送测试)下载PHP端的推送代码 (http://pan.baidu.com/share/link?shareid=311569022&uk=137542493),解压进入 etc目录更改 config.php里的IP地址为你的服务器IP地址
4.打开对应的url既可以看到如下的页面
Server status显示为 Online说明服务器正常启动了,
5.下面开始准备android客户端(下载地址https://github.com/tokudu/AndroidPushNotificationsDemo )
下载-->解压-->导入eclipse-->修改PushService里的MQTT_HOST为你的服务器的IP地址-->运行
启动推送服务,然后在上边的网页上把那一串字符输入到上边的输入框,下边输入要推送的内容
不幸的是报错了,错误如下
08-05 13:56:34.472: E/AndroidRuntime(30976): java.lang.VerifyError: com/tokudu/demo/PushService
08-05 13:56:34.472: E/AndroidRuntime(30976): at com.tokudu.demo.PushActivity$1.onClick(PushActivity.java:32)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.view.View.performClick(View.java:4240)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.view.View$PerformClick.run(View.java:17721)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.os.Handler.handleCallback(Handler.java:730)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.os.Handler.dispatchMessage(Handler.java:92)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.os.Looper.loop(Looper.java:137)
08-05 13:56:34.472: E/AndroidRuntime(30976): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-05 13:56:34.472: E/AndroidRuntime(30976): at java.lang.reflect.Method.invokeNative(Native Method)
08-05 13:56:34.472: E/AndroidRuntime(30976): at java.lang.reflect.Method.invoke(Method.java:525)
08-05 13:56:34.472: E/AndroidRuntime(30976): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-05 13:56:34.472: E/AndroidRuntime(30976): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-05 13:56:34.472: E/AndroidRuntime(30976): at dalvik.system.NativeStart.main(Native Method)
这个错误是因为少了个jar包,只要加入jar包就可以了(下载地址 http://pan.baidu.com/share/link?shareid=455455739&uk=137542493)
推送成功
【e】在后续的开发中遇到了个错误,在此提出来希望各位朋友避免出现此错误
1.当推送服务启动的时间过长时,一般启动几个月之后,可能会出现客户端连接不上服务,可能会导致程序无法运行,此时需要重新启动推送服务就可解决
相关推荐
Android 推送解决方案是指在 Android 平台上实现推送功能的各种方法和技术。推送功能是在移动互联网时代中的一种常见的技术,主要应用于各类移动应用程序中,以便实时地将服务器端的最新信息推送到客户端。 1. 推...
Android 消息推送解决方案 在 Android 开发中,消息推送是非常常见的应用场景,如电商的活动宣传、资讯类产品进行新闻推送等等。今天,我们将全面介绍 Android 中实现消息推送的 7 种主流解决方案。 一、前言 ...
在探讨Android实现推送方式解决方案的过程中,我们聚焦于XMPP协议这一关键知识点,深入解析其在Android推送机制中的应用。XMPP(Extensible Messaging and Presence Protocol)作为一种基于XML的即时通讯协议,不仅...
4. **Android推送实现**: - 使用开源库如libstreaming或SPydroid,它们提供了实现RTSP推流所需的组件和接口。 - 开发者需要配置推流参数,如服务器地址、端口、视频编码格式、分辨率等。 - 实现RTSP推送的关键...
XinGeDemo是信鸽提供的Android推送示例代码,其中包含了完整的集成和使用流程。通过阅读和运行这个示例,你可以快速了解如何在自己的应用中实现信鸽推送功能。主要文件可能包括MainActivity.java(用于展示推送消息...
Android推送方案.ppt
接下来,我们将介绍几种具体的Android推送解决方案: A. C2DM(Cloud to Device Messaging):Google提供的服务,允许服务器向Android应用发送数据。然而,C2DM在国内的可用性受限,因为它依赖Google的服务器,而...
### Android推送实现方案探讨 #### 背景与概述 随着移动互联网的迅速发展,智能手机已成为人们日常生活中不可或缺的一部分。在此背景下,推送技术作为一种能够实时向用户传递信息的关键技术,在移动应用开发中扮演...
MixPush SDK是Joyrun公司提供的一款多平台融合推送解决方案,它的核心目标是帮助开发者简化推送服务的集成过程,提高推送的到达率和用户体验。通过MixPush,开发者无需逐一集成各个厂商的推送SDK,就能实现对MIUI和...
总的来说,“见证Android消息推送时刻”涵盖了从基础的Socket编程到高级的第三方推送平台的使用,帮助开发者掌握构建实时、高效的消息推送系统的关键技能。通过学习和实践,开发者可以提升应用的用户体验,提高用户...
然而,实现 Android 消息推送通知远比 iPhone 上的推送通知解决方案复杂。Google 提供了 C2DM(Cloud to Device Messaging)服务,但它存在一些问题,如仅适用于 Android 2.2 及以上系统,需要依赖于 Google 官方...
下面我们将详细探讨Android消息推送的实现机制、常见方案以及离线消息的处理策略。 首先,Android消息推送通常依赖于云服务,如Google的Firebase Cloud Messaging (FCM,前身为GCM) 或自建的服务。FCM是Google提供...
AndroidPN,全称为Android Push ...总之,AndroidPN为Android开发者提供了一套强大而灵活的推送解决方案,简化了远程通知的实现,使得开发者能够专注于应用的核心功能,同时确保用户能够及时收到重要更新和消息。
本方案详细介绍了如何在Android应用中利用MQTT进行消息推送,并且已经在Windows平台上成功测试。下面将深入探讨MQTT协议的基本概念、其在Android中的应用以及提供的资源。 MQTT协议是一种基于发布/订阅模型的消息...
### Android推送代码整合详解 在移动互联网时代,即时消息推送已成为各类App不可或缺的功能之一,它不仅可以提高用户活跃度,还能有效提升用户体验。本篇将基于提供的文件内容,深入解析如何进行Android推送代码...
然而,Android平台的推送通知实现并不像iOS那样简单,因为它依赖于Google的Cloud to Device Messaging (C2DM)服务,该服务自Android 2.2版本开始内置,但不支持更早的版本,且在国内的可用性受限,这给开发者带来了...
在Android平台上,信息推送服务是应用开发者不可或缺的功能之一,它使得应用可以在后台高效地与服务器进行通信,即使用户没有...这份资源对于学习和实践Android推送服务,尤其是基于XMPP的实现,具有很高的参考价值。
在移动应用开发中,实时通信功能是不可或缺的一部分,而 MQTT(Message Queuing Telemetry Transport)协议因其轻量级、低功耗和高效性,成为了许多开发者选择的实时推送方案。在Android平台上实现MQTT推送,能够...
总结,基于百度云推送的Android即时通讯解决方案提供了丰富的功能和易用的API,可以帮助开发者快速实现消息推送功能,提升用户体验。理解并熟练运用上述关键技术和知识点,是成功集成和优化推送服务的基础。
在Android平台上,使用XMPP进行消息推送可以实现高效、可靠的通知服务。 首先,我们来理解一下客户端的实现。在Android客户端中,你需要集成一个XMPP库,如Smack或XMPPTCPConnection。这些库提供API,用于建立与...