GameCenter 报告成就 Swift 3

GameCenter reporting achievements Swift 3

我有点沮丧。我正在使用 GameCenter 和 Swift 3

实现成就

但是我得到了错误。

没有 bundleID 的捆绑包:(空)

我一直在关注 raywenderlich.com 等教程,但找不到 Swift 3 的成就(我有排行榜)所以不知道我的代码是否正确不正确,或者我如何才能以编程方式 return 捆绑包 ID 来确认成就 ID。

为了让这个在 ViewDidLoad 中工作,我编写了以下代码,我的 ViewController 是一个 GKGameCenterControllerDelegate

    var achievements = [GKAchievement]()
    let fullAchievement = GKAchievement(
             identifier: "ReversedIDforMyApp.FullMarks")
    achievements.append(fullAchievement)
    GameKitHelper.sharedInstance.reportAchievements(achievements: achievements)

我创建了一个助手来报告成就

func reportAchievements(achievements: [GKAchievement],
                        errorHandler: ((NSError?)->Void)? = nil) {
    guard gameCenterEnabled else {
        return
    }
    GKAchievement.report(achievements,
                                     withCompletionHandler: errorHandler as? (Error?) -> Void)
}
}

我不明白为什么会显示错误消息...

我可能错了,但请尝试在您的 GKAchievement 对象上设置百分比和横幅完成度。

var achievements = [GKAchievement]()
let fullAchievement = GKAchievement(identifier:"ReversedIDforMyApp.FullMarks")
fullAchievement.percentComplete = 100  //Set this
fullAchievement.showsCompletionBanner = true //Set this
achievements.append(fullAchievement)
GameKitHelper.sharedInstance.reportAchievements(achievements: achievements)

func reportAchievements(achievements: [GKAchievement]) {
    guard gameCenterEnabled else {
        return
    }
    GKAchievement.report([achievements]) { (error) in
        guard error == nil else {
            print("Error in reporting achievements: \(error)")
            return
        }
    } 
}

看来Apple设置Game Center成就需要很长时间,最后代码Ok。去图吧。