game login.php,GameCenter登录坑点总结

之前接入了GameCenter登录,发现了我遇到的几个坑点,总结一下:

代码调用很简单。但是当我们调用下面代码进行呼出GameCenter弹框进行登录时

GKLocalPlayer * localPlayer = [GKLocalPlayer localPlayer];

[localPlayer setAuthenticateHandler:^(UIViewController * _Nullable viewController, NSError * _Nullable error){

if (viewController) {

UIViewController * rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;

[rootViewController presentViewController:viewController animated:YES completion:nil];

} else {

if ([GKLocalPlayer localPlayer].authenticated) {

} else {

}

}

}

会发现:

1:App每次从后台切换到前台都会走上面block回调,这个需要注意,所以现在我做了进入前台监听防止重复调用block里面相关内容

2:如果后台登录了GameCenter账号A,在切换登录了GameCenter账号B,在进入App前台的时候,会走block回调,并且有苹果自带的GameCenter登录成功的弹框。很烦。。

会让用户误以为自己又重新登录GamCenter了呢,其实并没有走我们自己的登录。

3:如果呼出GameCenter弹框进行登录,连续呼出三次都点击了左上角的取消按钮,下次你在登录会发现呼不出来GameCenter弹框了,

模拟器很好测试,如果需要再次呼出需要重置模拟器,可再次呼出,我们现在这块做的逻辑处理是:

当本地GameCenter未登录,且呼不出来GameCenter弹框的时候,就提示用户GameCenter若Game Cen异常,请先在系统设置页登录Game Center后,再登录游戏,

让用户在设置里面登录GameCenter

4:如果登录提示一下错误This game is not recognized by Game Center,对应iTunes后台gameCenter配置问题,设置什么排行榜之类的.可参考

8648c9481657

tmp37fc557a.png

自己遇到了上面的一些坑,最后写完也发现同样也有别人总结比较好的

iOS开发之GameCenter使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Game Center登录,需要按照以下步骤进行操作: 1. 在Xcode中创建一个新的iOS游戏项目。 2. 在游戏项目中,打开“Capabilities”选项卡,启用Game Center选项。 3. 导入GameKit框架。 接下来,我们可以按照以下步骤在Swift中实现Game Center登录: 1. 在游戏中创建一个GameCenterHelper类: ```swift import GameKit class GameCenterHelper: NSObject, GKGameCenterControllerDelegate { var viewController: UIViewController? var authPlayer: GKLocalPlayer? override init() { super.init() authenticateLocalPlayer() } func authenticateLocalPlayer() { let localPlayer = GKLocalPlayer.local localPlayer.authenticateHandler = { [weak self] (viewController, error) in guard let weakSelf = self else { return } weakSelf.viewController?.present(viewController!, animated: true, completion: nil) if error == nil { weakSelf.authPlayer = localPlayer } } } func showGameCenter() { let vc = GKGameCenterViewController() vc.gameCenterDelegate = self viewController?.present(vc, animated: true, completion: nil) } func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) { gameCenterViewController.dismiss(animated: true, completion: nil) } func reportScore(score: Int64, leaderboardId: String) { if authPlayer == nil { return } let scoreReporter = GKScore(leaderboardIdentifier: leaderboardId) scoreReporter.value = score scoreReporter.context = 0 GKScore.report([scoreReporter]) { (error) in if error != nil { print(error!.localizedDescription) } } } } ``` 2. 在游戏中实例化GameCenterHelper类: ```swift let gameCenterHelper = GameCenterHelper() ``` 3. 在游戏中调用GameCenterHelper类中的authenticateLocalPlayer()方法进行Game Center登录: ```swift gameCenterHelper.authenticateLocalPlayer() ``` 4. 如果需要显示Game Center的排行榜,可以通过调用GameCenterHelper类中的showGameCenter()方法实现: ```swift gameCenterHelper.showGameCenter() ``` 5. 如果需要提交得分到指定的排行榜,可以通过调用GameCenterHelper类中的reportScore()方法实现: ```swift gameCenterHelper.reportScore(score: 100, leaderboardId: "com.your.leaderboard.id") ``` 以上就是在Swift中实现Game Center登录的基本步骤,需要注意的是,Game Center需要在真机上进行测试,因为在模拟器上无法进行Game Center登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值