转载文章请注明出处:http://write.blog.csdn.net/postedit/14644511
先来对比一下ios的推送:
iOS 在系统级别有一个推送服务程序使用 5223 端口。使用这个端口的协议源于 Jabber 后来发展为 XMPP ,被用于 Gtalk 等 IM 软件中。当然,开发者还是要做些事情,比如维护个服务器什么的: http://www.ifanr.com/3979。但是复杂度无疑降低很多了。
勇于承担责任的公司也更像个可靠的成年人,而不是一个随意胡闹的孩子。(以上摘选自知乎:http://www.zhihu.com/question/20667886)
谈谈个人的看法吧,
他说的过激,其实google是有走服务器的推送的,即GCM。google也一直在鼓励开发者使用,而且国外大公司的产品一般也是使用GCM的。
接下来记录代码,当时偷懒,直接copy的别人的代码:
private void AddNotification(String title,String name){ count++; //添加通知到顶部任务栏 //获得NotificationManager实例 String service = NOTIFICATION_SERVICE; NotificationManager nm = (NotificationManager)getSystemService(service); //实例化Notification Notification n = new Notification(); //设置显示图标 int icon = R.drawable.ic_launcher; //设置提示信息 String tickerText ="有新消息"; //显示时间 long when = System.currentTimeMillis(); n.icon = icon; n.tickerText = tickerText; n.when = when; //显示在“正在进行中” // n.flags = Notification.FLAG_ONGOING_EVENT; n.flags|=Notification.FLAG_AUTO_CANCEL; //自动终止 //实例化Intent Intent it = new Intent(this,MainActivity.class); it.putExtra(KEY_COUNT, count); /********************* *获得PendingIntent *FLAG_CANCEL_CURRENT: * 如果当前系统中已经存在一个相同的PendingIntent对象, * 那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。 *FLAG_NO_CREATE: * 如果当前系统中不存在相同的PendingIntent对象, * 系统将不会创建该PendingIntent对象而是直接返回null。 *FLAG_ONE_SHOT: * 该PendingIntent只作用一次, * 如果该PendingIntent对象已经触发过一次, * 那么下次再获取该PendingIntent并且再触发时, * 系统将会返回一个SendIntentException,在使用这个标志的时候一定要注意哦。 *FLAG_UPDATE_CURRENT: * 如果系统中已存在该PendingIntent对象, * 那么系统将保留该PendingIntent对象, * 但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据, * 例如更新Intent中的Extras。这个非常有用, * 例如之前提到的,我们需要在每次更新之后更y新Intent中的Extras数据, * 达到在不同时机传递给MainActivity不同的参数,实现不同的效果。 *********************/ PendingIntent pi = PendingIntent.getActivity(this, 0, it, PendingIntent.FLAG_UPDATE_CURRENT); //设置事件信息,显示在拉开的里面 n.setLatestEventInfo(updateService.this,title, name, pi); //发出通知 nm.notify(ID,n); }
n.setLatestEventInfo(updateService.this,title, name, pi);
这行代码被无情的扫了条横线,丫的,过时了。
查看api发现:
也就是说现在用Notification.Builder 代替了,打开其讲解:
http://developer.android.com/reference/android/app/Notification.Builder.html
发现还确实挺好。可以直接使用:
Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build();来代替。然后直接notify即可。