Android:开机自启动并接收推送消息

接收推送消息部分我们通过ZeroMQ实现,可以参考http://www.cnblogs.com/ilovewindy/p/3984283.html

首先是开机自启动的功能实现,代码如下:
1.    AndroidManifest.xml中添加如下代码:

 1 <!-- 抓取系统启动事件 -->
 2 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 3
 4 <application>
 5 …..
 6     <service
 7             android:name="com.demo.notification.NotificationService"
 8             android:icon="@drawable/icon"
 9             android:label="@string/app_name" >
10     </service>
11
12     <receiver android:name="com.demo.notification.MyScheduleReceiver" >
13         <intent-filter>
14             <action android:name="android.intent.action.BOOT_COMPLETED" />
15         </intent-filter>
16     </receiver>
17 </application>

2.    接着是实现MyScheduleReceiver代码,这是当Android启动后会自动启动的程序。

1 public class MyScheduleReceiver extends BroadcastReceiver {
2
3     @Override
4     public void onReceive(Context context, Intent intent) {
5
6         Intent service = new Intent(context, NotificationService.class);
7         context.startService(service);
8     }
9 }

3.    实现NotificationService代码,用来接收推送消息

 1 public class NotificationService  extends Service {
 2     private final IBinder mBinder = new MyBinder();
 3
 4     @Override
 5     public int onStartCommand(Intent intent, int flags, int startId) {
 6            // 将接收推送消息任务放入后台执行
 7         new ZeroMQMessageTask().execute();
 8
 9         return Service.START_STICKY;
10     }
11
12     @Override
13     public IBinder onBind(Intent arg0) {
14         return mBinder;
15     }
16
17     public class MyBinder extends Binder {
18         public NotificationService getService() {
19             return NotificationService.this;
20         }
21     }
22
23     private class ZeroMQMessageTask extends AsyncTask<String, Void, String> {
24
25         public ZeroMQMessageTask() {
26         }
27
28         @Override
29         protected String doInBackground(String... params) {
30
31             ZMQ.Context context = ZMQ.context(1);
32             ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
33             subscriber.subscribe(ZMQ.SUBSCRIPTION_ALL);
34             subscriber.connect("tcp://x.x.x.x:xxxx");
35             while (true) {                  // 通过不终止的循环来保证接收消息
36                 message = subscriber.recvStr();
37                 if (!message.equals("0")) {  // 0是由我自己定义的空消息标识,可以替换成自定义的其它标识
38
39                     // 显示推送消息
40                     String ns = Context.NOTIFICATION_SERVICE;
41                     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
42
43                     int icon = R.drawable.icon;
44                     CharSequence tickerText = "Demo - " + message;
45                     long when = System.currentTimeMillis();
46
47                     Notification notification = new Notification(icon,
48                             tickerText, when);
49                     notification.flags |= Notification.FLAG_AUTO_CANCEL;
50                     Context uiContext = getApplicationContext();
51                     CharSequence contentTitle = "Demo";
52                     CharSequence contentText = message;
53                     Intent notificationIntent = new Intent(uiContext,
54                             NotificationService.class);
55                     PendingIntent contentIntent = PendingIntent
56                             .getActivity(uiContext, 0, notificationIntent, 0);
57
58                     notification.setLatestEventInfo(uiContext, contentTitle,
59                             contentText, contentIntent);
60
61                     mNotificationManager.notify(1, notification);
62                 }
63             }
64         }
65
66         @Override
67         protected void onPostExecute(String result) {
68         }
69     }
70 }

好啦,重新启动手机尝试发条消息吧! :D

服务器端的代码可以参考此文:http://www.cnblogs.com/ilovewindy/p/3998862.html

时间: 2024-10-12 21:51:52

Android:开机自启动并接收推送消息的相关文章

如何使用腾讯信鸽向Android移动端推送消息(一)—如何注册Android应用

以前实现服务器端向Android移动端推送消息的功能主要借助开源的AndroidPN,但是它有一个致命的缺陷--无法向IOS终端发送消息,腾讯信鸽的出现打破了这一切,在接下来的几篇博客中将逐一地.详尽地总结一下腾讯信鸽的使用方法: 1.打开信鸽首页:http://xg.qq.com/ 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

Android push推送消息到达成功率优化

Android push推送消息到达成功率优化 问题:server向client发送消息.未考虑client是否在线,这种消息到达率是非常低的. 第一次优化:使用server离线缓存数据,推断假设client未连接.继而将消息保存到数据库.在下一次client和server进行连接成功后.取出数据发送给client. 并将该条消息从数据库中删除.但这种做法尽管得到了优化.可是另一种情况会使得消息无法百分百到达,当client与server断开连接后.server在发送消息的时候,并未意识到cli

百度云推送消息到达率低问题定位分析

去年做我们这个产品的时候,SE在客户端设计了一个推送功能,SE经过调研决定在Android和IOS端都集成百度的云推送SDK来支持这个推送功能.最近领导在做运营分析的时候,发现云推送的报表显示,在Android端消息的达到率非常低,设备的在线率波动比较大,有时高有时非常低. 我们的这个产品经过将近两年的折腾进步是有目共睹的,在今年的巴塞罗那GSMA世界移动通信大会上荣获"Best Mobile Music App"大奖,让我们这帮苦逼了将近两年的屌丝士气大振,领导也欣喜不已并且决定将精

(转)移动端主动推送消息原理

转:https://www.zhihu.com/question/19628406/answer/77205019 一.服务端主动推送消息到客户端过程 作者:谢泽帆   李琰链接:https://www.zhihu.com/question/24938934/answer/85359794来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 服务端主动推送到客户端是怎么一个过程 目前服务端给客户端推送,普遍做法是客户端与服务端维持一个长连接,客户端定时向服务端发送心跳以

使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

链接网址:http://www.cnblogs.com/yangwujun/p/5973120.html 在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret,可以在极光官网www.jpush.cn申请.web.config源码: <?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序

在Android应用程序中实现推送通知

几乎每一个应用程序的一个重要特性是支持推送通知的能力.使用推送通知,您可以更新用户,而不需要应用程序在任何时候运行或轮询服务器, 避免潜在的电池电量不足. 随着火力点云信息的介绍(FCM),谷歌使得在Android应用程序中实现推送通知变得容易了一点.FCM是谷歌云消息(GCM)的新版本和改进版本,您可以使用它将远程通知发送到客户机应用程序.对于将瞄准多个平台或需要利用先进的推操作(如分段推送)的应用程序,我们可以使用带有Azure通知集线器的FCM. 与GCM不同,FCM负责为您提供基本的消息

使用Java后台服务器通过腾讯信鸽向app推送消息_快速上手案例

这两天公司业务有需求,当用户进行一些操作,比如下订单.支付等操作时,需要关联后台自动向app推送顶栏消息.为了实现这个功能,使用了腾讯信鸽推送.<腾讯信鸽推送>已经封装好了推送代码,只需要调用它一个方法就可以,在方法参数中传入识别id和推送内容,就能完成推送消息到目标设备,实现起来其实非常容易! 第一步:登陆腾讯信鸽网站,下载jar包http://xg.qq.com/docs/server_api/other.html 然后点击java服务端,弹出下载框(我用的是火狐浏览器),保存文件 解压文

推送消息

APNS(Apple Push Notification Services)苹果专门的推送服务器 接收我们自己应用服务器需要被推送的消息 然后推送到我们的手机 手机通知我们的应用程序 注册的大概流程: 1 设备需要向APNS服务器注册 2 注册成功后返回device_token值 3 将这个token值发送给我们自己的服务器 4 有需要推送的消息时  自己的服务器将消息按一定的格式打包 结合token值发送给APNS服务器 5 由于App与APNS维持一个基于TCP的长连接 APNS将消息推送到

Android Push Notification实现信息推送使用

本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification的特点:  快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制. 无需架设服务器:通过使用"云服务",减少额外服务器负担. 可以同时推送消息到网站页面,android 手机 耗电少,占用流量少. 具体配置过程:  首先, 我们需要下载androidpn-client-0.5.0.