Penso che sia possibile utilizzare keychain
, è possibile disporre di una chiave di portachiavi unica in cui è possibile salvare tutto ciò che si desidera e accessibile da altre app se disponibili. Quindi per il tuo SDK
, diciamo che se c'è un'app, registrerà qualche valore nel portachiavi con una chiave univoca che è privata dell'SDK solo se la chiave non esiste, e se esiste lo sai, dal momento che puoi salvare qualsiasi valore nel portachiavi, puoi provare più opzioni e combinazioni che ti si addicono.
È possibile utilizzare KeychainItemWrapper per le implementazioni.
Elaborazione
Diciamo che abbiamo un metodo.
[MySDK register];
che può essere utilizzato ovunque, dicono in AppDelegate
. Il metodo register
genererà un token per l'app, per il dispositivo, che verrà salvato nel portachiavi utilizzando una chiave univoca che abbiamo definito nell'SDK, ad esempio in com.mysdk.key
. E mentre si salva in keychain
, l'SDK può effettivamente fare una registrazione.
Consideriamo il metodo sopra riportato in più app.
Ora abbiamo uno scenario. installa
utente un App-A
che utilizza il SDK
, il metodo register
chiamerà e creare un token e salverà nel portachiavi per la prima volta.
Ora utente installa un'altra App-B
che utilizza anche il SDK
, lo stesso metodo register
chiamerà, ma ora controllerà la chiave com.mysdk.key
in portachiavi, se esiste verrà solo aggiornare il conteggio per il token, che significava per il dispositivo.
Nota
portachiavi non destinato a salvare solo unique identifier
, è possibile salvare altre informazioni troppo.
Aggiornamento
controllare demo proietta https://db.tt/7xpKrgMp
Il wrapper
ho usato nei progetti è stessa SDK nel tuo caso, che è lo stesso in entrambi i progetti.
Cheers.
sono le due applicazioni dello stesso sviluppatore o diversi sviluppatori? – rmaddy
Le app potrebbero appartenere a sviluppatori separati. –
Ciò lo rende praticamente impossibile con le versioni moderne di iOS. Ogni due app otterrà un ID diverso per ogni ID fornito da Apple tramite la sua API. Due app dello stesso sviluppatore potrebbero rilevarsi a vicenda sul dispositivo utilizzando una lavagna condivisa denominata. Ma due app di uno sviluppatore diverso non possono condividere un pasteboard con nome comune. – rmaddy