2014-11-08 27 views
6

Ho creato un'app che utilizza le notifiche push di Parse.com. Ho una pagina delle impostazioni in cui è possibile abilitare/disabilitare le notifiche push. La pagina delle impostazioni funziona bene, cambia la preferenza utilizzata, ma le notifiche push non si fermeranno.Problema delle notifiche push di Parse.com. disiscrizione non funziona, continuando a ricevere notifiche push. (Android)

Ecco il mio codice in cui ho Subscribe/Unsubscribe:

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

      } 

Se "pushNotificationsPreference" è falso, chiama il metodo "ParsePush.unsubscribeInBackground (" Android "nuova SaveCallback()", ma ha vinto 't iscriversi, sono ancora li riceve.

sono andato su Parse.com, e io sono registrati solo in caso di canale 'Android'.

mi sto perdendo qualcosa?

+0

Ha cancellarsi con successo (nel registro)? Inoltre, sottolineando che hai la tua condizione IF impostata al contrario. Se (e == null) significa che non c'è errore, hai il contrario. ANCHE la tua preferenza probabilmente non esiste e il suo valore predefinito è "true". – Aashir

risposta

1

Basta aggiungere

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

in done() di ParsePush.unsubscribeInBackground(...)