2014-11-08 13 views
6

Zrobiłem aplikację, która używa powiadomień push Parse. Mam stronę ustawień, na której można włączać i wyłączać powiadomienia push. Strona ustawień działa dobrze, zmienia używane preferencje, ale powiadomienia push nie zatrzymają się.Problem z powiadomieniem push firmy Parse. anulowanie subskrypcji nie działa, wciąż otrzymuję powiadomienia push. (Android)

Oto mój kod, w którym Subskrypcja/Rezygnuję:

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); 
         } 
        } 
       }); 

      } 

Jeśli "pushNotificationsPreference" jest fałszywe, to wywołuje metodę "ParsePush.unsubscribeInBackground (" Android "nowy SaveCallback()", ale wygrał „t subskrybować, wciąż jestem ich otrzymania.

poszedłem na Parse.com, a ja jestem tylko zarejestrowany na«Android»kanału.

jestem brakuje czegoś?

+0

Czy zrezygnować z powodzeniem (w dzienniku)? Zwracając uwagę, twój stan IF ustawiony jest w odwrotnej kolejności. IF (e == null) oznacza, że ​​nie ma błędu, masz go na odwrót. TAKŻE twoje preferencje najprawdopodobniej nie istnieją i domyślnie przyjmuje wartość "true". – Aashir

Odpowiedz

1

Wystarczy dodać

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

do done() z ParsePush.unsubscribeInBackground(...)