手機實際收到後是否可以不顯示推送通知?一旦推送通知到達設備,我可以不顯示推送通知嗎?
我正在構建一個聊天應用程序。每次向用戶X發送消息時都會發送推送通知。如果用戶X位於表示與用戶Y聊天的Activity
內部,並且接收到來自用戶Y的消息,我希望不顯示推送通知。
這是否可能與常規的GCM推送通知?
手機實際收到後是否可以不顯示推送通知?一旦推送通知到達設備,我可以不顯示推送通知嗎?
我正在構建一個聊天應用程序。每次向用戶X發送消息時都會發送推送通知。如果用戶X位於表示與用戶Y聊天的Activity
內部,並且接收到來自用戶Y的消息,我希望不顯示推送通知。
這是否可能與常規的GCM推送通知?
只能用IntentService
才能做到。
當一個新Notification
在BroadcastReceiver
收到,你將它發送到IntentService
左右,隨着NotificationBuilder
顯示通知之前有有Listener
集到Activity
。如果Listener
存在,則用戶在Activity內,然後忽略通知。
例如,在你的IntentService
定義這樣的監聽器,
public interface PushNotificationListenerService {
public void showNewMessage();
}
和顯示通知之前,
public void setListener(PushNotificationListenerService listener) {
onPushReceivedCallback = listener;
}
Handler mHandler = new Handler(getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
if (onPushReceivedCallback != null) {
onPushReceivedCallback.showNewMessage();
// then ignore the notification.
}
else{
// show notification
}
});
在你的活動,
onCreate
方法,
NotificationIntentService.getInstance(this).setListener(this);
通過GCM
收到的消息由您的IntentService
處理,每次收到新消息時都會觸發該消息,但完全取決於您如何處理該消息。
如果您打算在有效/無效Activity
的鹼作用,我建議宣佈全球boolean
時onCreate()
或onResume()
被調用,並設置爲false時onDestroy()
或onPause()
被稱爲將是真實的。所以如果你收到一條消息,你會看到它有什麼價值,並根據當前狀態採取相應的行動。