- 浏览: 7325496 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
androidpn的学习研究(五)【转】androidpn-client 常见BUG解决方法
目前比较困扰大家的BUG主要有:
1.当服务端连续发送多条通知时,客户端都是显示同一条通知内容。
2.服务端重启,客户端也需要重启建立连接。
最后还有一个问题当我们服务器端重启的时候,客户端就无法在连接到服务器了,除非把android后台的服务
关掉,然后重启才行.在XmmpManager中加上如下红色代码就可:
private void addTask(Runnable runnable) {
Log.d(LOGTAG, "addTask(runnable)...");
taskTracker.increase();
synchronized (taskList) {
if (taskList.isEmpty() && !running) {
running = true;
futureTask = taskSubmitter.submit(runnable);
if (futureTask == null) {
taskTracker.decrease();
}
} else {
//解决服务器端重启后,客户端不能成功连接androidpn服务器
runTask();
taskList.add(runnable);
}
}
Log.d(LOGTAG, "addTask(runnable)... done");
}
由于没有经验,有BUG也只能继续GOOGLE,最终发现http://jclick.iteye.com/blog/1289383 这个TOMCAT版本比较符合项目的需求。在此还是要感谢这位大神,真是造福广大人民群众。在这个版本中主要修复了第二个问题,相信很多朋友都已经看过了这篇BLOG ,但是大神在回复中写错了类名XMPPWriter,所有导致大家并不知道问题是怎么解决的, 其实是修改了org.androidpn.client.XmppManager,org.jivesoftware.smack.PacketWriter(smack源码)这2个类,这个将他2个版本的代码比较一下就可以看出来了,废话了那么多,在此说一下大神解决此问题的方法。代码在
http://phonepush.sinaapp.com/forum.php?mod=viewthread&tid=5&extra=page%3D1篇帖子中已经贴出来了。在org.androidpn.client.XmppManager的LoginTask方法中加了一行代码getConnection().startKeepAliveThread(xmppManager);跟踪进去发现是开启了一个线程发送心跳,当发送失败时捕获异常,客户端每隔一段时间进行重连。
org.jivesoftware.smack.PacketWriter的run方法
- catch (SocketException e) {
- Log.e("PacketReader", e.toString());
- connection.disconnect();
- xmppManager.startReconnectionThread();
- } catch (IOException e) {
- e.printStackTrace();
- }
getConnection().startKeepAliveThread(xmppManager); 编译就报错,那是因为他用的是第一个版本 ,所有请先下载第二个版本,第二个版本带大神精简过smack源码。 其实心跳机制在官方的asmack中就已经存在,并且在建立XmppConnection的时候就已经启动,但是遗憾的是asmack的开发人员并没有进行异常之后的重连
- catch (Exception e) {
- // Do nothing
- }
然后是第二个问题,我们刚才下载的这个版本并没有处理这个BUG,其实很简单,群里的高手经解决,就是将org.androidpn.client.Notifier中的notify方法的
- PendingIntent contentIntent = PendingIntent.getActivity(context, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- PendingIntent contentIntent = PendingIntent.getActivity(context, random.nextInt(),
- intent, PendingIntent.FLAG_UPDATE_CURRENT);
好了,这2个问题基本上就解决了,本人也只是在此将前辈们的经验写一下,方便大家集中修正BUG。其实在碰到框架BUG时,看看框架的源码还是有帮助,可能会有很多不解,但我觉得多多少少还是能看出一点东西来。以后大家碰到什么问题也可以提出来,大家一起研究讨论,集思广益,总比一个人瞎想的强,有什么好的想法也可以拿出来分享。再次谢谢各位前辈。
在网上androidpn上的BUG基本都解决了,也多亏牛人们顶力相助,灰常感谢啊。在这里要说的问题是手机锁屏后,客户端心跳包不再发送了。由于android也接触不是很久,对一些系统的机制不太了解,经过多次测试与分析,才发现了是由于锁屏后CPU处于睡眠状态,线程都被挂起,所以在服务器端设定的闲置时间内收不到心跳包,强制移除用户下线。
OK问题已经找到了就好办多了,既然是被挂起了我们就只有让心跳一直在跑了,不啰嗦了。既而在网上有找到两种方法,第一种是让系统不睡眠,第二种则是使用AlarmManager来做我们的操作,在这里我是用的第二种方案来解决我们的问题的。但这样可能有点费电,暂时只能这样解决了了,不知道大家有木有更好点的解决办法能说出来大家一起研究研究。
1).
- //申请设备电源锁
- public void acquireWakeLock()
- {
- if (null == mWakeLock)
- {
- PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
- mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NotificationService");
- if (null != mWakeLock)
- {
- mWakeLock.acquire();
- }
- }
- }
- //释放设备电源锁
- public void releaseWakeLock()
- {
- if (null != mWakeLock)
- {
- mWakeLock.release();
- mWakeLock = null;
- }
- }
//申请设备电源锁 public void acquireWakeLock() { if (null == mWakeLock) { PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NotificationService"); if (null != mWakeLock) { mWakeLock.acquire(); } } } //释放设备电源锁 public void releaseWakeLock() { if (null != mWakeLock) { mWakeLock.release(); mWakeLock = null; } }
2).
public void registerAlarmManager(){ am = (AlarmManager)getSystemService(ALARM_SERVICE); pi = PendingIntent.getBroadcast(this, 0, new Intent(this, HeartActionBroadCast.class), Intent.FLAG_ACTIVITY_NEW_TASK); long now = System.currentTimeMillis(); am.setInexactRepeating(AlarmManager.RTC_WAKEUP, now, 20000, pi); }
评论
你好,在andrioidpn-client客户端源码里,NotificationDetailsActivity这个类里,下面的参数都是什么意思呢
Intent intent = getIntent();
String notificationId = intent
.getStringExtra(Constants.NOTIFICATION_ID);
String notificationApiKey = intent
.getStringExtra(Constants.NOTIFICATION_API_KEY);
String notificationTitle = intent
.getStringExtra(Constants.NOTIFICATION_TITLE);
String notificationMessage = intent
.getStringExtra(Constants.NOTIFICATION_MESSAGE);
String notificationUri = intent
.getStringExtra(Constants.NOTIFICATION_URI);
疑惑1、 这几个参数代表什么意思呢, notificationId; notificationApiKey; notificationTitle; notificationMessage; notificationUri;
我看源码里好几处都用到这几个参数 ,
疑惑2、 现在服务端已经能将消息推送到服务端了并增加了一些参数,推送的消息里增加了距离distance等参数,该在客户端的哪个类里获取这些值呢
针对疑惑1,我们从源代码可以看出》你所说的几个字段是消息体的几个字段:
客户端消息体类public class NotificationIQ extends IQ 中的字段:
notificationId对应Id为消息的id
notificationApiKey对应消息的apiKey,双方约定的一个鉴权字段
notificationTitle对应消息的title,消息标题主题
notificationMessage对应消息的message,消息的内容
notificationUri对应消息的url,消息的url
针对疑惑2、如果想在消息中添加额外字段,客户端可能需要须修改NotificationIQ中添加的相关的字段,服务端NotificationMO中添加额外功能实现咯
你好,在andrioidpn-client客户端源码里,NotificationDetailsActivity这个类里,下面的参数都是什么意思呢
Intent intent = getIntent();
String notificationId = intent
.getStringExtra(Constants.NOTIFICATION_ID);
String notificationApiKey = intent
.getStringExtra(Constants.NOTIFICATION_API_KEY);
String notificationTitle = intent
.getStringExtra(Constants.NOTIFICATION_TITLE);
String notificationMessage = intent
.getStringExtra(Constants.NOTIFICATION_MESSAGE);
String notificationUri = intent
.getStringExtra(Constants.NOTIFICATION_URI);
疑惑1、 这几个参数代表什么意思呢, notificationId; notificationApiKey; notificationTitle; notificationMessage; notificationUri;
我看源码里好几处都用到这几个参数 ,
疑惑2、 现在服务端已经能将消息推送到服务端了并增加了一些参数,推送的消息里增加了距离distance等参数,该在客户端的哪个类里获取这些值呢
我以前做的时候从http://jclick.iteye.com/blog/1289383 这里下载,然后修改部分代码了。可能需要使用源代码调试研究咯
我的邮箱是:short7116@gmail.cp,
略懂一点,有问题可以沟通哦,哈哈
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3361据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)
2012-10-23 16:34 19804Mosquitto是一个实现了MQTT3.1协议的代理服务器, ... -
MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署
2012-10-23 16:28 38866在mqtt的官方网站,有许多mqtt, 其中: Mos ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2930转载自 http:/ ... -
MQTT的学习研究(十五) MQTT 和android整合文章
2012-10-22 17:06 5227详细参考: How to Implement Pu ... -
MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现
2012-10-19 14:08 11925在moquette-mqtt中提供了回调callback ... -
MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
2012-10-19 13:51 12817使用IBM MQTTv3实现相关的发布订阅功能 MQTTv3 ... -
MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现
2012-10-19 13:38 7730基于Future 模式的 ... -
MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
2012-10-19 13:30 6329package com.etrip.push; impo ... -
MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理
2012-10-19 13:21 13430MQTT(MQ Teleme ... -
MQTT的学习研究(九)基于HTTP GET MQTT 抓取消息服务端使用
2012-10-18 15:25 5084官方参看文档: HTTP GET 接收主题请求协议和响应协议 ... -
MQTT的学习研究(八)基于HTTP DELETE MQTT 订阅消息服务端使用
2012-10-18 15:20 4266参看官方文档 HTTP DELETE 订阅主题 ... -
MQTT的学习研究(七)基于HTTP POST MQTT 发布消息服务端使用
2012-10-18 15:11 7798参阅官方文档 http:// ... -
MQTT的学习研究(六) MQTT moquette 的 Blocking API 订阅消息客户端使用
2012-10-17 16:56 21918参阅官方文档: http://publib.boulder. ... -
MQTT的学习研究(五) MQTT moquette 的 Blocking API 发布消息服务端使用
2012-10-17 16:52 30733参看官方文档: http://publib.bould ... -
MQTT的学习研究(四)moquette-mqtt 的使用之mqtt Blocking API客户端订阅并接收主题信息
2012-10-16 15:51 14622在上面两篇关于mqtt的broker的启动和mqtt的服 ... -
MQTT的学习研究(三)moquette-mqtt 的使用之mqtt服务发布主题信息
2012-10-16 15:48 19843接着上一篇的moquette-mqtt 的使用之 ... -
MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动
2012-10-16 15:42 36832在MQTT 官网 (http://mqtt.o ... -
MQTT的学习研究(一)MQTT学习网站
2012-10-16 15:21 11258MQTT的官方推荐网站: http://mqtt.org/s ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2325在许多应用中使用到sdcard的检查,在osmdro ...
相关推荐
首先, 我们需要下载androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip。 下载地址:http://sourceforge.net/projects/Androidpn/ 解压两个包,Eclipse导入client,配置好目标平台,打开raw/...
使用Apndroid Push Notification 实现android信息推送,AndroidPn项目是使用XMPP协议实现信息推送的一个开源项目。内涵服务端和客户端源码
本文将围绕"androidpn-client-0.5.0"和"androidpn-server-0.5.0-bin"这两个核心组件,深入探讨AndroidPN的工作原理、实现方式以及其在实际应用中的价值。 首先,我们来看客户端组件"androidpn-client-0.5.0"。它是...
这个项目包括三个主要组件:服务器端(androidpn-server)、客户端库(androidpn-client)以及一个演示应用(androidpn-demoapp)。我们来逐一解析这些组件及其相关知识点。 1. **AndroidPN-Server-0.5.0-bin**: 这...
"AndroidPN-client-0.5.0"是一个针对Android平台的Push Notification服务的客户端库,主要功能是为了实现设备与服务器之间的即时通信。Push Notification服务在移动应用开发中扮演着重要角色,它允许服务器向已安装...
androidpn-server-0.5.0-bin.zip解压后,打卡bin目录下run.bat运行,之后...将androidpn-client-0.5.0解压后导入Eclipse,修改/raw/androidpn.properties中的xmppHost=xxx.xxx.x.xxx,将其修改为PC端的IP,运行项目,OK
androidpn-client-0.5.0 修改后的版本 修改原来的通知操作 为action配置 这样就可以定义自己的操作 action为: org.androidpn.client.NotificationProcess 请看文章: ...
总的来说,"androidpn-client-0.5.0.zip"为Android开发者提供了一个实现Push Notification功能的工具,通过这个压缩包,开发者可以学习、定制并集成PN服务到他们的应用程序中,从而提高应用的互动性和用户体验。
总之,`androidPn-client`项目是一个利用`asmack`库实现在Android平台上自动重连的PN客户端,它解决了移动环境中网络不稳定的问题,确保了推送通知的及时性和可靠性。对源码的修改是为了更好地适应Android环境,提升...
android推送,很不错的例子,下下来看看吧
该程序包修改至开源项目androidpn-server-0.0.5,携带jre7(此为windows版本,如要运行在linix,需更换为linix jre7),无需java配置运行环境,实现离线推送功能,支持推送消息有效期设置,服务端能够自主判断消息...
真正的免费开源安卓推送demo,可以实现实时的web端推送安桌系统
这里的"androidpn-client 0.5.01111"就是客户端的源码包,包含了实现消息推送所需的所有代码。 **二、客户端源码结构与关键组件** 1. **注册过程**:客户端首先需要向服务端注册,通常会提供一个唯一标识(如IMEI...
本文将深入探讨“androidpn-client-pc”版本,这是一个专为PC环境设计的客户端,用于进行压力测试。在实际操作中,我们发现这个客户端在进行大规模并发测试时具有较高的灵活性和实用性。 首先,我们来了解如何运行...
AndroidPN(Android Push Notification)客户端...总之,AndroidPN客户端是实现Android设备推送通知功能的重要工具,涉及了网络通信、消息处理、权限管理等多个技术领域,为开发者提供了高效、可靠的通知推送解决方案。
androidpn xmpp 消息推送 供研究学习使用 项目相关的jar包 androidpn-client-0.5.0,androidpn-server-0.5.0-binmandroidpn-server-0.5.0-src
内含:配置方法一份、androidpn-server-0.5.0-bin.zip、androidpn-demoapp-0.5.0-bin.zip、androidpn-client-0.5.0-bin.zip。三个压缩包都是从官网下载http://sourceforge.net/projects/androidpn/,未做任何修改。...