GameCenter报告成就Swift 3

时间:2017-04-06 05:33:55

标签: ios swift game-center

我有点沮丧。我使用GameCenter和Swift 3实现了成就

但是我收到了错误。

没有bundleID的包:( null)

我一直在关注诸如来自raywenderlich.com的教程,但无法找到任何有成就的Swift 3(我有排行榜工作)所以不知道我的代码是不正确的,或者我如何以编程方式返回捆绑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)
}
}

我无法解决为什么会显示错误消息...

2 个答案:

答案 0 :(得分:2)

Apple似乎需要很长时间才能设置Game Center成就,最后代码还可以。去图。

答案 1 :(得分:1)

我可能错了,但尝试在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
        }
    } 
}