游戏中的玩家停止游戏
问题描述:
我正在iOS上开发一款需要互联网连接的游戏。我遇到的问题是在播放器停止播放时在服务器(parse.com)上设置Bool。现在我在做这个...游戏中的玩家停止游戏
-(void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"Player logged out");
[self playerLoggedOut];
}
和
-(void)playerLoggedOut
{
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
[currentUser setObject:[NSNumber numberWithBool:NO] forKey:@"playing"];
[currentUser saveEventually];
[sharedInstance requestSentWithDesc:@"Player logged out"];
}
}
但是,这似乎并没有工作,也有游戏崩溃的情况,当我相信上面会永远不会打电话。
还有......
-(void)applicationWillTerminate:(UIApplication *)application
但我不知道什么时候就这么叫。
有使用计时器的可能性,但如果玩家永远不会重新登录或不长时间,我不知道如何使用计时器。
答
对于您当前的处理,您需要启动后台任务(请参阅here),该任务在您发出请求之前开始,并在完成块中结束(因此请更改您使用的保存方法)。
对于其他情况,这将不起作用,您可能希望添加某种“保持活动”消息和/或解析云代码,该代码监视用户交互并自动将它们注销,如果它们对于设置时间。
我试图尽量避免使用云代码,因为这会给所有事情增加另一层复杂性。我没有得到的是我正在使用TestFlight,并且某种程度上SDK总是知道游戏崩溃或结束的时间,所以在应用程序中必须有一种方法,或者是使用您提到的后台任务的TestFlight? – Phil
它将使用后台任务和我处理的异常处理程序的组合。 – Wain