如何使用 swift 对本地玩家进行身份验证?

Posted

技术标签:

【中文标题】如何使用 swift 对本地玩家进行身份验证?【英文标题】:How authenticate a local player with swift? 【发布时间】:2014-12-03 16:40:43 【问题描述】:

我正在尝试将游戏中心集成到我的游戏中并创建排行榜。

我已经在 iTunes Connect 上创建了排行榜,启用了游戏中心并创建了一个沙盒测试器。

尽管我有这个错误:

not able to authenticate fail error is nil

这是我的错误 println(见我的代码)

我错过了什么吗?

这里是我的gameViewController的代码:

import UIKit
import SpriteKit
import AVFoundation
import iAd
import GameKit

var defaults = NSUserDefaults()
var highscore = defaults.integerForKey("highscore")


class GameViewController: UIViewController, ADBannerViewDelegate, GKGameCenterControllerDelegate 


var adBannerView: ADBannerView!

var leaderboardIdentifier: String? = nil
var gameCenterEnabled: Bool = false

override func viewDidLoad() 
    super.viewDidLoad()

    var skView = self.originalContentView as SKView
    var scene:SKScene = GameScene(size: skView.bounds.size)

    skView.presentScene(scene)

    loadAds()




func authenticateLocalPlayer()

    var localPlayer = GKLocalPlayer()
    localPlayer.authenticateHandler =
         (viewController : UIViewController!, error : NSError!) -> Void in
            if viewController != nil
            
                self.presentViewController(viewController, animated:true, completion: nil)
            
            else
            
                if localPlayer.authenticated
                
                    self.gameCenterEnabled = true
                    localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler
                         (leaderboardIdentifier, error) -> Void in
                            if error != nil
                            
                                print("error")
                            
                            else
                            
                                self.leaderboardIdentifier = leaderboardIdentifier
                                println("\(self.leaderboardIdentifier)") //in your example "VHS" should be returned
                            
                    
                
                else
                
                    println("not able to authenticate fail")
                    self.gameCenterEnabled = false

                    if (error != nil)
                    
                        println("\(error.description)")
                    
                    else
                    
                        println(    "error is nil")
                    
                
            
    

【问题讨论】:

您是否在 iTunes Connect 上为应用程序启用了 Game Center 并随后编辑了项目以使用相同的捆绑 ID(或类似的东西)?您应该查看 Game Center 编程指南以获取更多信息。这听起来确实像一个简单的设置步骤(在 iTunes Connect 或应用程序的 Info.plist 中)这里缺少。 谢谢。实际上,捆绑 ID 不一样......但是它无法记录。调试区域显示“无法验证失败”和“错误为零”所以我的 println. 我编辑了带有新错误的问题...我无法设置游戏中心,这让我发疯了!!! :x 【参考方案1】:

我自己解决。

编码:var localPlayer = GKLocalPlayer.localPlayer()

而不是:var localPlayer = GKLocalPlayer()

【讨论】:

以上是关于如何使用 swift 对本地玩家进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PrincipalContext.ValidateCredentials 对本地计算机进行身份验证时出错?

使用 swift 进行 API 身份验证

如何从 Lambda AWS 验证 Google API?

Swift / Instagram API - 如何使用 Instagram 应用进行身份验证

在 Swift 中使用 WKWebView 进行身份验证

如何对大多数视图使用 Firebase 身份验证的 Swift 应用程序进行单元测试?