- 浏览: 7325544 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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的客户端几个重要的类:
ServiceManager:管理消息服务和加载相关的配置。
ConnectivityReceiver:处理网络状态的广播。
NotificationReceiver:处理服务端发送的推送消息。
NotificationService:后台服务用户响应服务端的消息。需要在AndroidManifest.xml.注册。
NotificationSettingsActivity:推送信息设置页面。
PersistentConnectionListener:监控连接关闭和重连事件的监听。
PhoneStateChangeListener:监听手机状态的事件监听类。
ReconnectionThread:重连的线程类。
Notifier:客户端发送通知的类。
NotificationIQ:消息的数据包。
ServiceManager中获取属性信息的方法:
private Properties loadProperties() { // InputStream in = null; // Properties props = null; // try { // in = getClass().getResourceAsStream( // "/org/androidpn/client/client.properties"); // if (in != null) { // props = new Properties(); // props.load(in); // } else { // Log.e(LOGTAG, "Could not find the properties file."); // } // } catch (IOException e) { // Log.e(LOGTAG, "Could not find the properties file.", e); // } finally { // if (in != null) // try { // in.close(); // } catch (Throwable ignore) { // } // } // return props; Properties props = new Properties(); try { int id = context.getResources().getIdentifier("androidpn", "raw", context.getPackageName()); props.load(context.getResources().openRawResource(id)); } catch (Exception e) { Log.e(LOGTAG, "Could not find the properties file.", e); // e.printStackTrace(); } return props; }
SharedPreferences的使用:
sharedPrefs = context.getSharedPreferences( Constants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE); Editor editor = sharedPrefs.edit(); editor.putString(Constants.API_KEY, apiKey); editor.putString(Constants.VERSION, version); editor.putString(Constants.XMPP_HOST, xmppHost); editor.putInt(Constants.XMPP_PORT, Integer.parseInt(xmppPort)); editor.putString(Constants.CALLBACK_ACTIVITY_PACKAGE_NAME, callbackActivityPackageName); editor.putString(Constants.CALLBACK_ACTIVITY_CLASS_NAME, callbackActivityClassName); editor.commit();
获取手机的设备id:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // Get deviceId deviceId = telephonyManager.getDeviceId();
Notifier中发送通知的方法:
// Notification Notification notification = new Notification(); notification.icon = getNotificationIcon(); notification.defaults = Notification.DEFAULT_LIGHTS; if (isNotificationSoundEnabled()) { notification.defaults |= Notification.DEFAULT_SOUND; } if (isNotificationVibrateEnabled()) { notification.defaults |= Notification.DEFAULT_VIBRATE; } notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.when = System.currentTimeMillis(); notification.tickerText = message; // Intent intent; // if (uri != null // && uri.length() > 0 // && (uri.startsWith("http:") || uri.startsWith("https:") // || uri.startsWith("tel:") || uri.startsWith("geo:"))) { // intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); // } else { // String callbackActivityPackageName = sharedPrefs.getString( // Constants.CALLBACK_ACTIVITY_PACKAGE_NAME, ""); // String callbackActivityClassName = sharedPrefs.getString( // Constants.CALLBACK_ACTIVITY_CLASS_NAME, ""); // intent = new Intent().setClassName(callbackActivityPackageName, // callbackActivityClassName); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // } Intent intent = new Intent(context, NotificationDetailsActivity.class); intent.putExtra(Constants.NOTIFICATION_ID, notificationId); intent.putExtra(Constants.NOTIFICATION_API_KEY, apiKey); intent.putExtra(Constants.NOTIFICATION_TITLE, title); intent.putExtra(Constants.NOTIFICATION_MESSAGE, message); intent.putExtra(Constants.NOTIFICATION_URI, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(context, title, message, contentIntent); notificationManager.notify(random.nextInt(), notification);
androidpn用户名和密码来源:
XmppManager的注册任务(RegisterTask)中run方法:
if (!xmppManager.isRegistered()) {
final String newUsername = newRandomUUID();
final String newPassword = newRandomUUID();
Registration registration = new Registration();
PacketFilter packetFilter = new AndFilter(new PacketIDFilter(
registration.getPacketID()), new PacketTypeFilter(
IQ.class));
评论
国际移动用户识别码(IMSI:International Mobile SubscriberIdentification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字。其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户。
imsi的百科地址:
http://baike.baidu.com/view/715091.htm
发表评论
-
[转]年度最实用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 30734参看官方文档: 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 ...
相关推荐
客户端主要包含以下几个关键部分: 1. **注册过程**:当用户安装应用后,客户端会通过与服务器进行交互,获取一个唯一的设备ID,并注册到服务器的推送列表中。 2. **后台监听**:客户端在后台持续运行,通过保持一...
这个项目包括三个主要组件:服务器端(androidpn-server)、客户端库(androidpn-client)以及一个演示应用(androidpn-demoapp)。我们来逐一解析这些组件及其相关知识点。 1. **AndroidPN-Server-0.5.0-bin**: 这...
在Android平台上,`androidPn-client`项目是一个专门为实现Push Notification服务客户端而设计的应用程序。Push Notification(简称PN)是一种让服务器向移动设备推送消息的技术,通常用于实时更新应用状态或者提醒...
在"androidpn-client-0.5.01111"源码包中,我们可以找到以下几个关键模块: 1. **MainActivity**:主活动类,启动客户端并处理用户交互。 2. **PushManager**:推送管理器,负责客户端的注册、连接、断开和消息处理...
在进行压力测试时,我们需要关注以下几个方面: 1. **网络连接管理**:客户端需要有效地建立和维护与服务器的连接,确保在高并发情况下连接的稳定性和效率。 2. **消息处理**:客户端接收到推送消息后,如何正确...
在“模拟androidpn客户端的代码”中,我们可能会涉及到以下几个关键知识点: 1. **注册过程**:客户端需要先注册到AndroidPN服务端,通常会提供一个唯一的设备标识(如IMEI或Android ID)以及应用程序的唯一标识...
接下来是客户端部分,`androidpn-client-0.5.0`包含了客户端的源代码。客户端的职责包括: 1. **注册**:客户端在启动时会连接到服务端,并注册其设备以便接收通知。这通常涉及到获取GCM或FCM的注册ID并将其发送到...
客户端的实现包括以下几个关键点: 1. **注册过程**:首次启动时,客户端会获取设备的IMEI(国际移动设备身份码)或Google提供的GCM(Google Cloud Messaging)注册ID,并将这些信息发送到服务器进行注册。 2. **...
标题"androidpn server+client"表明我们将讨论的是AndroidPN的服务器端和客户端组件。服务器端负责处理推送通知的发送和管理,而客户端则是安装在Android设备上的应用,接收并处理来自服务器的通知。 在描述...
《AndroidPN_Demo Example——深入理解Android推送通知》 ...通过学习和研究这个示例,不仅可以掌握AndroidPN的使用,还能对Android推送通知有更深入的理解,从而在实际项目中更好地运用这一技术。
客户端(androidpn-client)部分主要包含以下几个关键组件: 1. **注册模块**:用户安装应用后,首先需要注册设备以获取唯一的设备ID,这个ID用于服务器识别并推送消息给特定设备。源码中,注册过程涉及网络通信,...
在实现XMPP消息推送的过程中,开发者需要对以下几个关键概念有深入理解: 1. **连接管理**:客户端需要建立并维护一个持久的TCP连接到服务器,确保消息能实时传递。 2. **身份验证**:服务器需要验证每个客户端的...
在开发过程中,开发者需要关注以下几个方面: 1. 授权管理:确保客户端能正确处理服务器的身份验证和授权。 2. 异常处理:对网络异常、连接超时等情况进行妥善处理,提供良好的用户体验。 3. 资源管理:有效地管理...
这包括以下几个步骤: 1. 注册:应用在启动时向GCM/FCM服务器注册,获取一个唯一的注册ID。 2. 接收:应用需要实现一个BroadcastReceiver来监听接收到的推送消息。 3. 处理:收到消息后,根据消息内容决定是否显示...
6. **androidpn-client-0.5.0**:对应的客户端库,可能用于接收服务器端的推送通知,增强应用的实时性。 通过研究这个项目,开发者不仅可以学习到Android应用开发的基本技能,还能深入理解电商系统的架构设计和实现...
在实际开发中,客户端需要考虑以下几点: 1. 注册过程:客户端启动时需要向服务器注册,获取设备令牌。 2. 消息处理:客户端需要有一个消息处理服务,即使应用在后台也能接收并处理推送消息。 3. 用户权限:确保应用...