我尝试使用swift验证本地播放器,但是每次我都得到一个. authenticated属性的false值,这是我使用的代码,当应用程序启动时,它被主视图控制器调用。
func authenticateLocalPlayer(){
var localPlayer = GKLocalPlayer()
localPlayer.authenticateHandler = {(viewController, error) -> Void in
if viewController {
self.presentViewController(viewController, animated: true, completion: nil)
}else{
println((GKLocalPlayer().authenticated))
}
}
}
它可以很好地显示登录视图,但当我输入一个测试帐户登录时,它只会返回GKLocalPlayer().authenticated
为false。iTunes Connect和info.plist中的捆绑包标识符完全相同,版本和应用程序名称也是如此。iTunes Connect和Xcode中的Game Center都启用了所有功能,但我感觉这不是编码错误。这是一个安装错误,在应用程序记录的某个地方,但我不能为我的生活找到哪里。
经过进一步的修改,我得到了这个错误:
Error Domain = GKErrorDomain Code = 15 "无法完成请求的操作,因为Game Center无法识别此应用程序。" UserInfo = 0x17006b300 {NSLocalizedDescription =无法完成请求的操作,因为Game Center无法识别此应用程序。}
我不知道为什么会这样,捆绑包id,名称和版本都匹配...
任何帮助都将不胜感激。
3条答案
按热度按时间plicqrtu1#
此问题已由Apple解决-只需致电:
以前的问题是
GKLocalPlayer()
不返回GKLocalPlayer单例,而是返回一个新的GKLocalPlayer示例。如果你使用的是Xcode 6 BETA,你可以添加一个C函数或Objective-C方法来返回真实的的GKLocalPlayer单例,然后在Swift中使用它,这是我的解决方案的要点(命名约定不好):
在Objective-C标题中:
在Objective-C实现中:
在桥接标头中:
然后,当你需要访问Swift中的GKLocalPlayer单例时,你可以使用
getLocalPlayer()
而不是GKLocalPlayer()
,把它放在GKLocalPlayer类别的方法中可能是一个更好的主意。然而,如上所述,这不再是必需的。
ivqmmu1c2#
即使使用Xcode 6 Beta 6,在使用iOS 8 beta 5的设备上,使GKLocalPlayer.localPlayer()可用,我仍然得到错误:
“NSLocalizedDescription=无法完成请求的操作,因为Game Centre无法识别此应用程序”
解决方案(通过苹果的开发者论坛发现)是进入设备上的“设置”,然后进入“游戏中心”,并在开发者部分下启用“沙箱”。
yqkkidmi3#
你可以使用它,我在GitHub中为iOS游戏中心创建了一个简单的类Easy Class Game Center Swift
https://github.com/DaRkD0G/Easy-Game-Center-Swift