天天看點

android 通知覆寫以及PendingIntent參數問題

關于極光推送的內建我就不多說了,內建之後,我們一般都是自定義消息的,但是如果自定義消息的話,就意味着我們還得自定義Notification。

1:有時我們會碰到這樣的問題:一次發送多個自定義消息,此時我們通知會覆寫前一個通知,也就是顯示一個通知,并且是最新的通知。關于這個問題,

我們可以看到 第一個參數是設定一個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() * ), intent, PendingIntent.FLAG_UPDATE_CURRENT);
           

3:第三個坑:當我們點選通知之後,又開啟了一個Activity ,這是因為Intent的setTag沒有設定:

至于FLAG_ACTIVITY_NEW_TASK 的添加 是因為:從非activity的非正常途徑啟動一個activity,比如從一個service或者broadcastreceiver中啟動一個activity,則intent必須要添加FLAG_ACTIVITY_NEW_TASK标記。

附上JPush自定義消息和通知源碼位址:http://download.csdn.net/download/lmq121210/9929808

繼續閱讀