You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameKit成就通知不显示:此前正常,调整代码后失效

Game Center成就通知不显示排查求助

昨天我成功实现了Game Center成就通知功能,但今天调整代码后,通知不再显示。不过成就仍能正常同步到Game Center,我找不到submitAchievements()函数的问题,现将代码附上:

GKAchievement.loadAchievements(completionHandler: { (achievements: [GKAchievement]?, error: Error?) in
    let fifteenID = "15"
    var fifteenAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    fifteenAchievement = achievements?.first(where: { $0.identifier == fifteenID})
    
    // 不存在则创建新成就
    if fifteenAchievement == nil {
        fifteenAchievement = GKAchievement(identifier: fifteenID)
    }
    
    if score >= 15 {
        fifteenAchievement?.showsCompletionBanner = true
        fifteenAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let thirtyID = "30"
    var thirtyAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    thirtyAchievement = achievements?.first(where: { $0.identifier == thirtyID})
    
    // 不存在则创建新成就
    if thirtyAchievement == nil {
        thirtyAchievement = GKAchievement(identifier: thirtyID)
    }
    
    if score >= 30 {
        thirtyAchievement?.showsCompletionBanner = true
        thirtyAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let fiftyID = "50"
    var fiftyAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    fiftyAchievement = achievements?.first(where: { $0.identifier == fiftyID})
    
    // 不存在则创建新成就
    if fiftyAchievement == nil {
        fiftyAchievement = GKAchievement(identifier: fiftyID)
    }
    
    if score >= 50 {
        fiftyAchievement?.showsCompletionBanner = true
        fiftyAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let hundredID = "100"
    var hundredAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    hundredAchievement = achievements?.first(where: { $0.identifier == hundredID})
    
    // 不存在则创建新成就
    if hundredAchievement == nil {
        hundredAchievement = GKAchievement(identifier: hundredID)
    }
    
    if score >= 100 {
        hundredAchievement?.showsCompletionBanner = true
        hundredAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let negativeID = "1"
    var negativeAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    negativeAchievement = achievements?.first(where: { $0.identifier == negativeID})
    
    // 不存在则创建新成就
    if negativeAchievement == nil {
        negativeAchievement = GKAchievement(identifier: negativeID)
    }
    
    if score < 0 {
        negativeAchievement?.showsCompletionBanner = true
        negativeAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let clawID = "69"
    var clawAchievement: GKAchievement? = nil
    
    // 查找已存在的成就
    clawAchievement = achievements?.first(where: { $0.identifier == clawID})
    
    // 不存在则创建新成就
    if clawAchievement == nil {
        clawAchievement = GKAchievement(identifier: clawID)
    }
    
    if claw {
        clawAchievement?.showsCompletionBanner = true
        clawAchievement?.percentComplete = 100
    }
    
    // 插入上报进度的代码
    
    if error != nil {
        // 处理错误
        print("Error: \(String(describing: error))")
    }
    
    let achievementsToReport: [GKAchievement] = [fifteenAchievement!, thirtyAchievement!, fiftyAchievement!, hundredAchievement!, clawAchievement!, negativeAchievement!]
    
    // 向Game Center上报进度
    GKAchievement.report(achievementsToReport, withCompletionHandler: {(error: Error?) in
        if error != nil {
            // 处理错误
            print("Error: \(String(describing: error))")
        }
    })
})

所有成就的showsCompletionBanner属性已设为true,但通知仍未出现。

内容的提问来源于stack exchange,提问作者Ness Earthbound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:38:16