游戏中心有缓存机制可以离线使用吗?游戏中心是否有可能在离线模式下收集分数,当网络状态更改为在线时,它会将分数传送到服务器?是否可以在离线模式下阅读下载的乐谱?
如果上述问题的答案是否定的,是否有图书馆可以为我们做到这一点?
谢谢你的帮助。
游戏中心有缓存机制可以离线使用吗?游戏中心是否有可能在离线模式下收集分数,当网络状态更改为在线时,它会将分数传送到服务器?是否可以在离线模式下阅读下载的乐谱?
如果上述问题的答案是否定的,是否有图书馆可以为我们做到这一点?
谢谢你的帮助。
Axeva 的回答不正确- GKLocalPlayer没有定义“resubmitStoredScores”这样的方法。相反,此方法是在 Apple 的 iOS 开发人员库中提供的示例代码中定义和实现的,该库演示了 GameKit 排行榜的使用。
如果您不想复制 Apple 示例中的代码,可以使用一些库。一些谷歌搜索在 github.com 上出现了以下点击:
如果这些都不能满足您的需求,您将需要实施自己的解决方案。
是的,Game Center 会缓存分数。您在应用委托的 didFinishLaunchingWithOptions 中调用的 GKLocalPlayer 对象有一个 resubmitStoredScores 方法。
这是一个例子:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
if (localPlayer.isAuthenticated) {
// Enable Game Center Functionality
self.gameCenterAuthenticationComplete = YES;
if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString: localPlayer.playerID]) {
[[NSUserDefaults standardUserDefaults] setBool: NO forKey: kGameInProgress];
// Switching Users
if (!self.player || ![self.currentPlayerID isEqualToString: localPlayer.playerID]) {
// If there is an existing player, replace the existing PlayerModel object with a
// new object, and use it to load the new player's saved achievements.
// It is not necessary for the previous PlayerModel object to writes its data first;
// It automatically saves the changes whenever its list of stored
// achievements changes.
self.player = [[[PlayerModel alloc] init] autorelease];
}
[[self player] loadStoredScores];
[[self player] resubmitStoredScores];
}
} else {
// User has logged out of Game Center or can not login to Game Center, your app should run
// without GameCenter support or user interface.
self.gameCenterAuthenticationComplete = NO;
}
}];