关于极光推送的集成我就不多说了,集成之后,我们一般都是自定义消息的,但是如果自定义消息的话,就意味着我们还得自定义Notification。
1:有时我们会碰到这样的问题:一次发送多个自定义消息,此时我们通知会覆盖前一个通知,也就是显示一个通知,并且是最新的通知。关于这个问题,
notificationManager.notify(notifyId, notification);
我们可以看到 第一个参数是设置一个id,造成这个问题,就是因为我们没有设置这个ID,如果我们需要显示多个通知,这个ID应该传入不同的值, 如下:
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
int notifyId = (int) System.currentTimeMillis();
// 将通知加入状态栏,标记为id;notifyID不能相同,防止多个通知的话,产生通知覆盖;
notificationManager.notify(notifyId, notification);
2:第二个坑就是:当我们的PendingIntent跳转到相应的Activity时,在Activity中获取到的数据是一样的值,这是因为我们的PendingIntent.getActivity第二个参数没有设置(设置成了相通的值),应该设置成不一样的值:
// 第二个参数不能写死,可以写一个随机数或者是时间毫秒数 保证唯一,防止跳转之后获得的Intent数据不变
PendingIntent pendingIntent =
PendingIntent.getActivity(context, (int)(Math.random() * 100), intent, PendingIntent.FLAG_UPDATE_CURRENT);
3:第三个坑:当我们点击通知之后,又开启了一个Activity ,这是因为Intent的setTag没有设置:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
至于FLAG_ACTIVITY_NEW_TASK 的添加 是因为:从非activity的非正常途径启动一个activity,比如从一个service或者broadcastreceiver中启动一个activity,则intent必须要添加FLAG_ACTIVITY_NEW_TASK标记。
附上JPush自定义消息和通知源码地址:http://download.csdn.net/download/lmq121210/9929808