2014-04-29 72 views
0

手機實際收到後是否可以不顯示推送通知?一旦推送通知到達設備,我可以不顯示推送通知嗎?

我正在構建一個聊天應用程序。每次向用戶X發送消息時都會發送推送通知。如果用戶X位於表示與用戶Y聊天的Activity內部,並且接收到來自用戶Y的消息,我希望不顯示推送通知。

這是否可能與常規的GCM推送通知?

回答

1

只能用IntentService才能做到。

當一個新NotificationBroadcastReceiver收到,你將它發送到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); 
1

通過GCM收到的消息由您的IntentService處理,每次收到新消息時都會觸發該消息,但完全取決於您如何處理該消息。

如果您打算在有效/無效Activity的鹼作用,我建議宣佈全球booleanonCreate()onResume()被調用,並設置爲false時onDestroy()onPause()被稱爲將是真實的。所以如果你收到一條消息,你會看到它有什麼價值,並根據當前狀態採取相應的行動。