Google Play游戏服务iOSlogin失败

这是我第一次进入Xcode和Objective-C的世界,所以请耐心等待。 我一直在按照谷歌开发者网站上列出的步骤在iOS上实施谷歌玩游戏服务: https : //developers.google.com/games/services/ios/quickstart

步骤1-7工作正常,我可以使用GPSignIn对象login到Google+:

完成validation。 2013-05-28 02:37:19.718 MyApp [2012:907]成功loginGoogle! Auth对象是GTMOAuth2Authentication 0x1d56ab40:{accessToken =“ya29.AHES6ZQa59aGdKmrWhKSN0ie_S_CqgLfBqKzlmHXU0Cpnxs”,refreshToken =“1 / A8dCPhVKRRgbsM4Gcp4qlkhNJc9SyyTUEVssN3A-Iro”,expirationDate =“2013-05-28 10:37:19 +0000”}

一旦我实现了第8步,虽然似乎有一个GPGManager signIn函数,我已经这样实现崩溃:

-(void)startGoogleGamesSignIn { // The GPPSignIn object has an auth token now. Pass it to the GPGManager. [[GPGManager sharedInstance] signIn:[GPPSignIn sharedInstance] reauthorizeHandler:^(BOOL requiresKeychainWipe, NSError *error) { // If you hit this, auth has failed and you need to authenticate. // Most likely you can refresh behind the scenes if (requiresKeychainWipe) { [[GPPSignIn sharedInstance] signOut]; } [[GPPSignIn sharedInstance] authenticate]; }]; } 

debugging日志:

03-05-28 02:16:04.742 MyApp [1970:907]打印gppsignin实例= 2013-05-28 02:16:04.781 MyApp [1970:907]打印gpgmanager实例= 2013-05-28 02:16 :04.785 MyApp [1970:907] *由于未捕获的exception'NSInvalidArgumentException',理由:'* – [__ NSPlaceholderArray initWithObjects:count:]尝试从对象中插入nil对象[0] 0x3375d2a3 0x3b3db97f 0x336a734d 0x336a7a79 0x57089 0x56bf5 0x57f2d 0x37bd1 0x36331 0xb27f 0xb10b 0x2edcd 0x108d7 0x340986fd 0x33fd81f9 0x33fd8115 0x3343a45f 0x33439b43 0x33461fcb 0x336a374d 0x3346242b 0x333c603d 0x33732683 0x33731ee9 0x33730cb7 0x336a3ebd 0x336a3d49 0x372562eb 0x355b9301 0xab3d 0x3b812b20)的libc ++ abi.dylib:终止称为抛出exception(LLDB)

据我可以告诉我没有在我的代码中使用任何NSArrays,我无法得到一个正确的调用堆栈。 有没有人玩这个类似的问题?

这是因为您忘记在xcode项目中添加PlayGameServices.bundle,如https://developers.google.com/games/services/ios/quickstart上的入门指南

来源:我有同样的问题。

官方文档并没有明确地区分这个区别:与PlayGameServices.framework不同, PlayGameServices.framework必须被添加到Link Binary With Libraries构build阶段,所以PlayGameServices.bundle必须被添加到Copy Bundle Resources构build阶段。

PS:感谢farroid指出问题的原因。

添加一个所有的exception断点,然后当断点被击中时,你可以使用image lookup --address在控制台的地址,从跟踪文本的地址,找出问题出在哪里。 当你把它提交给GPP类时,你认为存在的很可能是零。