最近在开发项目时遇到一个需求,就是要实现一个抢单功能,后台会通过push的方式向手机端推送消息,手机收到消息后,展示一个对话框,点击确定后跳转到抢单界面,同时,在通知中心有通知提示,通过点击通知也可以跳转到对应的activity。
消息推送是推过友盟推送进行实现的,在onMessage()时,我们会开始对应的弹框和后初始化notification。初始化的代码如下:
//初始化通知 NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context .NOTIFICATION_SERVICE);NotificationCompat为google推出的兼容模式,保证各个版本都可以正常使用。初始化后,就是设置对应的参数,要保证通知能够实现,3个属性要保证必须实现分别是Title、Text、SmallIcon。如果少设置了某个属性,系统就不能正常实现显示通知。NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
设置了通知显示属性后要实现点击以后能跳转到对应的操作还需要设置对应的intent。这里是会用到PendingIntent,我们需要给PendingInten设置对应的属性,然后将PengindgIntent设置给Builder,就可以通过点击通知实现跳转了。
//getActivity第二个参数,不同的通知需要传不同的num,不然到导致多个通知,前面的会被后面的覆盖 PendingIntent mainPendingIntent = PendingIntent.getActivity(context, num, intent, PendingIntent.FLAG_CANCEL_CURRENT);其中getActivity的第二个参数,如果每次可能弹出多个通知,则要保证每个通知的num都不一样,否则,只会有一个通知有效其他的会失效。可以通过使用随机数的方式来保证每次的num值不一样。
mBuilder.setContentTitle(title).setContentText(msg).setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(mainPendingIntent).setAutoCancel(true);将对应的属性设置完就可以调用
mNotificationManager.notify(id, mBuilder.build());来开始通知了。此处notify方法的id在同时存在多个通知时,也需要保证每一个都不一样不然前面的通知会被覆盖,在通知栏里面只能看到最新的通知。
就此就可以实现最基本的通知功能