2015-06-11 3 views
8

Sto tentando di inviare notifiche tramite il sistema di argomento in un dispositivo iOS con la nuova API di Google Cloud Messaging progettata per dispositivo iOS.Un modo semplice per annullare l'iscrizione per tutti gli argomenti sottoscritti con GCM (dispositivo iOS)

Ho i certificati giusti in modo da poter ricevere notifiche da un argomento creato. Il mio codice per iscriversi ad un argomento è la seguente:

if (_registrationToken && _connectedToGCM) { 
    [[GCMPubSub sharedInstance] subscribeWithToken:_registrationToken 
              topic:topicToSubscribe 
              options:nil 
              handler:^(NSError *error) { 
               if (error) { 
               //handle error here 
               } else { 
                self.subscribedToTopic = true; 
               } 
              }]; 
} 

So che la funzione equivalente di annullare l'iscrizione, ma questa funzione bisogno di un nome di argomento. C'è un modo per recuperare tutti gli argomenti in cui la mia app è eventualmente abbonata a non registrati prima di iscriversi?

+0

Non penso che ci sia una funzione per recuperare tutti gli argomenti che la tua app ha già sottoscritto. Puoi creare una matrice nel tuo locale, per rappresentare un elenco di argomenti sottoscritti dalla tua app. Quindi puoi verificare se un argomento esiste già nella matrice, prima di fare in modo che il 'CCMPubSub' sottoscriva o annulli le chiamate. – ztan

risposta

7

Non è possibile recuperare l'elenco degli argomenti a cui è stata sottoscritta la propria app dal servizio Google Cloud Messaging.

Devi tenere traccia della lista e persistere sulla tua app (hardcoded, memorizzato in preferenze, database, file, ecc.) O sul tuo server.

Quando si decide di lasciare che l'unsubscribe utente, recuperare l'elenco degli argomenti da cui è memorizzato e passarlo al unsubscribeWithToken: Token: Argomento: opzioni: handler come accennato nella pagina Implementing Topic Messaging

+0

grazie, ho fatto qualche ricerca e conferma la tua risposta. Farò come suggerisci – Meitneshi

6

In alternativa, quando si ricevono i messaggi è possibile verificare chi è il messaggio 'da'. Se proviene da un argomento a cui non sei più interessato, puoi annullare l'iscrizione anziché elaborare il messaggio.

0

Se si desidera annullare l'iscrizione a tutti gli argomenti eseguire semplicemente:

GGLInstanceID *iid = [GGLInstanceID sharedInstance]; 

GGLInstanceIDDeleteHandler deleteHandler = ^void(NSError *error) { 
    if (error) { 
    // failed to delete the identity for the app 
    // do an exponential backoff and retry again. 
    } else { 
    // try to get a new ID 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     GGLInstanceIDHandler handler = 
      ^void(NSString *identity, NSError *error) { 
       if (error) { 
       // failed to get the identity for the app 
       // handle error 
       } else { 
       NSString *instanceID = identity; 
       // handle InstanceID for the app 
       } 
      } 
     [iid getIDWithHandler:handler]; 
    }); 
    } 
} 

[iid deleteIDWithHandler:deleteHandler]; 

More info

Non dimenticare di aggiornare il vostro segno!