2014-11-21 35 views
0

我剛剛在我的應用中實施了Parse推送通知。我希望能夠顯示推送通知,但我不希望應用程序在用戶按下推送通知時打開。相反,我只是想通知被解僱。停止顯示活動 - 推送通知(解析)

我會想象它會被ParsePushBroadcastReciever處理,但是我找不到任何在線哪個適合我的目的。

這裏是我的子類ParsepushBroadcastReciever:

public class Receiver extends ParsePushBroadcastReceiver { 

     @Override 
     public void onPushOpen(Context context, Intent intent) { 
      Log.e("Push", "Clicked"); 
      Intent i = new Intent(context, HomeScreen.class); 
      i.putExtras(intent.getExtras()); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 

回答

2

爲了讓您以編程方式關閉通知,您將需要使用NotificationManager實例傳遞這是對NotificationManager傳遞到notify()的ID叫cancel()(自這實際上是將通知推送到通知窗格中)。您無法單獨使用Parse SDK來執行此操作,因爲您需要自行控制通知羣體。

首先,你需要安裝一個NotificationManager實例,然後當通知已準備好要推你分配給它,你可以在以後引用取消這樣當值:您可以通過採取控制看

public class MyParsePushBroadcastReceiver extends ParsePushBroadcastReceiver { 

    NotificationManager mNotificationManager; 
    int notification_id = 0; 

    @Override 
    public void onPushOpen(Context context, Intent intent) { 
    Log.e("Push", "Clicked"); 
    mNotificationManager.cancel(notification_id)    
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     mNotificationManager = (NotificationManager)context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 
     super.onReceive(context, intent); 
     ... 
    } 

    @Override 
    protected Notification getNotification(Context context, Intent intent) { 
     Notification n = super.getNotification(context, intent); 
     notification_id = intent.getExtras().getInt("NOTIFICATION_TYPE"); 
     mNotificationManager.notify(notification_id, n); 
     return null; 
    } 
} 

所以NotificationManager(而不是將它傳遞給Parse SDK以分配一些未知值),我們可以確切知道在調用cancel時要使用哪些值。我讓系統構建我的Notification對象(我使用super.getNotification()得到它),但您也可以自己使用Notification builder自行創建通知。