Come salvare e tentativi di segnalazione dopo il fallimento della rete di GKAchievement?
-
08-10-2019 - |
Domanda
di Apple afferma che se si desidera segnalare un GKAchievement ma si ottiene un errore di rete, il modo migliore per gestire questa situazione è quello di salvare il GKAchievement (possibilmente aggiungendolo a un array), poi periodicamente tentare di riportare il risultato.
Qual è il posto migliore per salvare i risultati? Sarebbe NSUserDefaults bastano, o sarebbe un elenco di proprietà essere un modo migliore?
Quando e con quale frequenza dovrei tentare di rapporto? Su avvio di applicazioni, o qualcosa del genere ogni 10 minuti?
Soluzione
Un elenco proprietà può solo gestire specifiche classi (vedere "che cosa è un elenco di proprietà?" ), che GKAchievement
non è uno dei. NSUserDefaults
utilizza elenchi di proprietà, in modo che anche di fuori. GKAchievement
, tuttavia, conforme al protocollo NSCoding
, il che significa che si può facilmente risparmiare loro di disco utilizzando un NSKeyedArchiver
. Vorrei creare una serie di successi non dichiarata e di lettura / scrittura di loro in questo modo:
//Assuming these exist
NSArray * unreportedAchievements;
NSString * savePath;
// Write to disk
[NSKeyedArchiver archiveRootObject:unreportedAchievements toFile:savePath];
// Read from disk
unreportedAchievements = [NSKeyedUnarchiver unarchiveObjectWithFile:savePath];
Altri suggerimenti
Si può tranquillamente salvare nulla in un elenco di proprietà (e quindi NSUserDefaults) trasformandola in NSData: archivedDataWithRootObject: