gpt4 book ai didi

ios - 不支持游戏中心成就

转载 作者:行者123 更新时间:2023-11-30 13:51:57 31 4
gpt4 key购买 nike

我在尝试将游戏中心成就应用到 iOS 游戏中时遇到一些问题。该游戏已经进行了玩家身份验证和排行榜设置,并且运行良好。我遇到的第一个错误是使用此方法时:

GKAchievementDescription.loadAchievementDescriptionsWithCompletionHandler 

它给了我一个错误,其中指出了两件事:

  1. “由于与服务器通信时出现错误,无法完成请求的操作。”
  2. “应用不支持成就。”

iTunes connect 中已添加五项成就,所以我不明白为什么它说不支持它们。其他问题是当我使用此方法时:

GKAchievement.reportAchievements

当调用此方法时,完成处理程序中的错误为 nil,但它返回“没有 bundle ID:(null)”。成就横幅不会显示,游戏中心 View 中也没有成就选项卡。

该应用程序最近已转移给另一位开发人员,但他随后希望添加一些额外的功能,因此我使用他提供的配置文件和开发人员证书,以便我可以正确测试游戏中心和应用程序内购买。我遇到的问题似乎与传输有关?

所以我的问题是导致游戏“不支持成就”的问题可能是什么?

任何帮助将不胜感激,谢谢。

最佳答案

你的问题有点模糊,这两种方法在你的代码中看起来怎么样。一个函数的两行很难帮忙

您加载的代码应该如下所示

 /// Load achievements
func loadAchievements(){
print("Loading submitted achievements")

GKAchievement.loadAchievementsWithCompletionHandler( { (achievements, error:NSError?) -> Void in
guard error == nil else {
print("Error loading achievements progress: \(error)")
return
}

guard let validAchievements = achievements else { return }
for achievement in validAchievements {
print("Name: \(achievement.identifier)")
print("Percentage: \(achievement.percentComplete)")
print("Date: \(achievement.lastReportedDate)")
self.achievementsDict.updateValue(achievement, forKey: achievement.identifier!)
}
})
}

您的报告代码应如下所示

/// Save achievement progress
func reportAchievementProgress(percent: Double, achievementID: String) {

guard self.localPlayer.authenticated else { return }

let achievement = self.checkAchievement(achievementID) as GKAchievement? //
if achievement != nil {
achievement!.percentComplete = percent
achievement!.showsCompletionBanner = true

GKAchievement.reportAchievements([achievement!], withCompletionHandler: { (error:NSError?) -> Void in
guard error == nil else {
print(error)
return
}

print("Reported achievement: \(achievementID)) to: \(percent) %")
})
}
}

/// Check achievement
private func checkAchievement(achievementID: String) -> GKAchievement {
var achievement = self.achievementsDict[achievementID]
if achievement == nil {
print("Achievement with no previous progress, saving...")
achievement = GKAchievement(identifier: achievementID)
self.achievementsDict.updateValue(achievement!, forKey: achievement!.identifier!)
}
return achievement!
}

achievementsDict 是一个字典,您可以在其中缓存您的成就。

var achievementsDict = [String: GKAchievement]()

这有帮助吗?

关于ios - 不支持游戏中心成就,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34151873/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com