Appleは、GKAchievementを報告したいがネットワークエラーが発生した場合、これを処理する最善の方法は、GKAchievementを保存して(場合によってはアレイに追加して)、定期的に成果の報告を試みることです。
成果を保存するのに最適な場所はどこですか?NSUserDefaultsで十分でしょうか、それともプロパティリストの方が適しているでしょうか。
いつ、どのくらいの頻度で報告を試みる必要がありますか?アプリケーションの起動時、または10分ごとのようなものですか?
Appleは、GKAchievementを報告したいがネットワークエラーが発生した場合、これを処理する最善の方法は、GKAchievementを保存して(場合によってはアレイに追加して)、定期的に成果の報告を試みることです。
成果を保存するのに最適な場所はどこですか?NSUserDefaultsで十分でしょうか、それともプロパティリストの方が適しているでしょうか。
いつ、どのくらいの頻度で報告を試みる必要がありますか?アプリケーションの起動時、または10分ごとのようなものですか?
プロパティリストは、特定のクラスのみを処理できます(「プロパティリストとは」を参照)。これGKAchievement
は、の1つではありません。 NSUserDefaults
プロパティリストを使用しているので、それも出ています。 GKAchievement
ただし、NSCoding
プロトコルに準拠しているため、を使用してディスクに簡単に保存できますNSKeyedArchiver
。報告されていない成果の配列を作成し、次のように読み取り/書き込みします。
//Assuming these exist
NSArray * unreportedAchievements;
NSString * savePath;
// Write to disk
[NSKeyedArchiver archiveRootObject:unreportedAchievements toFile:savePath];
// Read from disk
unreportedAchievements = [NSKeyedUnarchiver unarchiveObjectWithFile:savePath];
NSDataに変換することで、プロパティリスト(したがってNSUserDefaults)にほとんど何でも保存できます。archivedDataWithRootObject: