2015-11-24 12 views
5

Ricordo che il token del dispositivo non cambia mai al momento della reinstallazione per iPhone.l'app fornisce token dispositivo diverso su re-installazione di nuovo

Tuttavia in questi giorni (soprattutto su iOS 9), ho notato che il token del dispositivo cambia se re-installo l'app.

Questa impostazione è stata eseguita da Apple o mi manca qualcosa?

Devo saperlo perché questo è molto importante per me perché sto inviando push basato su utenti specifici per informare i loro aggiornamenti.

Anche per nessun motivo ci sono molti token dispositivo non desiderati.

Nota

sto chiamando sotto webservice in App Delegato

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    // sending it to online database for my record 
} 
+0

sì, ho anche affrontato lo stesso problema, ma eliminando l'app, i dati derivati ​​e il file di build e quindi l'installazione di nuovo risolve il mio problema. –

+0

@PratikShah: Non ho alcun problema .. Voglio solo essere sicuro che questo stia accadendo solo da Apple e non sto facendo niente di sbagliato ... bcz di questo, voglio eliminare i token dispositivo non desiderati e devo trovare un modo per quello ... –

risposta

6

Sì su iOS9 Apple dice che dispositivo Token potrebbe cambiare ogni volta che si installa l'applicazione. Quindi il modo migliore è registrare nuovamente il token dispositivo su ogni avvio.

Here è un link alla documentazione Mele sulla periferica token

+0

Come ho detto nella mia domanda , Mi sto già registrando ogni volta che apro l'app ... e ricordo che non è mai successo prima ... –

+1

penso che sia nuovo in iOS 9 –

0

RTFM: "Il valore di questa proprietà è la stessa per le applicazioni che provengono dallo stesso fornitore in esecuzione sullo stesso dispositivo. Viene restituito un valore diverso per le app sullo stesso dispositivo che provengono da fornitori diversi e per le app su dispositivi diversi indipendentemente dal fornitore. "

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/#//apple_ref/occ/instp/UIDevice/identifierForVendor

+0

ma la mia app proviene dallo stesso fornitore ... quando re-installo dall'app store, mi dà sempre il nuovo ID dispositivo ... –

0

Sì cambiare, potrebbe essere cambiata quando è installato ogni app volta. devi aggiornare device_token ad ogni avvio dell'app.

1

È necessario trovare il proprio modo per tenere traccia dell'utente. Ecco i problemi con il tuo approccio e suggerito identificatore del fornitore:

  • Il dispositivo push token può cambiare in qualsiasi momento. È possibile tenere traccia di questo cambiamento durante l'avvio dell'applicazione e chiedere al server di cambiare token, ma i messaggi che verranno inviati fino a questo momento su un vecchio token andranno persi.
  • identifierForVendor - anche fonte inaffidabile di identificativo univoco, perché cambierà in molti casi.

    Il valore in questa proprietà rimane invariato mentre l'app (o un'altra app dello stesso fornitore) è installata sul dispositivo iOS. Il valore cambia quando l'utente cancella tutte le app del fornitore dal dispositivo e successivamente ne reinstalla una o più. Il valore può anche cambiare quando si installano i build di test usando Xcode o quando si installa un'app su un dispositivo utilizzando la distribuzione ad-hoc. Pertanto, se la tua app memorizza il valore di questa proprietà ovunque, dovresti gestire con garbo le situazioni in cui l'identificatore cambia.

Per unico dispositivo è possibile utilizzare portachiavi come fonte di stoccaggio identificatore persistente. È possibile generare per l'utente un nuovo identificativo univoco (ad esempio con NSUUID) e memorizzarlo in Portachiavi (se non ancora esistente).Se il gruppo di accesso verrà configurato per l'articolo memorizzato e riutilizzato con tutta l'applicazione, sarà possibile accedere all'identificatore univoco memorizzato dalle applicazioni sul dispositivo dell'utente. Se configurato correttamente, l'elemento in Keychain verrà archiviato nei backup dei dispositivi utente crittografati e verrà ripristinato anche sul suo nuovo dispositivo.

+0

Anche se il portachiavi viene utilizzato, l'elemento rimarrà attraverso l'eliminazione e la reinstallazione dell'applicazione , anche tutte le app di un gruppo. – zaph

+0

@zaph Sì! Questa roba persistente ci ha causato molto dolore quando abbiamo usato ** MKStoreKit ** e non abbiamo capito perché non vediamo un'interfaccia corretta dopo la reinstallazione dell'applicazione. La funzionalità è stata acquistata e attiva. Quando abbiamo approfondito il suo codice, abbiamo trovato Keychain e abbiamo imparato una lezione da questa situazione su come Keychain è utile :) –

Problemi correlati