2014-11-08 91 views
6

我製作了一個使用Parse.com推送通知的應用程序。我有一個設置頁面,您可以在其中啓用/禁用推送通知。設置頁面運行良好,它改變了使用的偏好,但推送通知不會停止。Parse.com推送通知問題。取消訂閱不工作,仍然收到推送通知。(Android)

這裏是我的代碼中,我訂閱/退訂:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
      pushNotificationsPreference = sharedPrefs.getBoolean("PUSH_NOTIFICATION_PREFERENCE", true); 

      if (pushNotificationsPreference) { 
       ParsePush.subscribeInBackground("Android", new SaveCallback() { 
        @Override 
        public void done(ParseException e) { 
         if (e != null) { 
          Log.d("com.parse.push", "successfully subscribed to the broadcast channel."); 
         } else { 
          Log.e("com.parse.push", "failed to subscribe for push" + e); 
         } 
        } 
       }); 
      } else { 
       ParsePush.unsubscribeInBackground("Android", new SaveCallback() { 
        @Override 
        public void done(ParseException e) { 
         if (e != null) { 
          Log.d("com.parse.push", "successfully subscribed to the broadcast channel."); 
         } else { 
          Log.e("com.parse.push", "failed to unsubscribe for push" + e); 
         } 
        } 
       }); 

      } 

如果 「pushNotificationsPreference」 是假的,它調用方法 「ParsePush.unsubscribeInBackground(」 機器人 「新SaveCallback()」,但它贏得了「T訂閱,我仍然接受他們。

我去Parse.com,我只在‘Android’的通道註冊。

我失去了什麼?

+0

done()是否成功退訂(日誌)?另外指出,你的IF條件反向設置。 IF(e == null)表示沒有錯誤,反之亦然。另外,您的偏好很可能不存在,並且默認值爲「true」。 – Aashir 2015-06-06 20:35:21

回答

1

只需添加

if (e == null) { 
    ParseInstallation.getCurrentInstallation().saveInBackground(); 
} 

ParsePush.unsubscribeInBackground(...)