我的iOS应用程序现在在AppStore中,每次向游戏中心报告分数时都会崩溃.但是,当我使用沙箱用户进行测试时,一切都很



我的iOS应用程序现在在AppStore中,每次向游戏中心报告分数时都会崩溃。但是,当我使用沙箱用户进行测试时,一切都很好。

调用[GKScore reportScores:whileScreeningChallenges:withEligibleChallenges:withCompletionHandler:] 时似乎崩溃了

这是崩溃日志:

Incident Identifier: 35E9C678-9B45-4EB7-8766-A81A173C72E1
CrashReporter Key:   8b3897a8e6fd37ad36fe1788e6862b87f6591db1
Hardware Model:      iPhone6,2
Process:             Arithmetic [11729]
Path:                /private/var/mobile/Containers/Bundle/Application/C487E7B5-E8B9-41BD-9A8D-BAC8BB4260EC/Arithmetic.app/Arithmetic
Identifier:          com.cqmh.Arithmetic
Version:             1 (1.0.5)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]
Date/Time:           2015-02-24 17:39:35.401 +0800
Launch Time:         2015-02-24 17:38:24.644 +0800
OS Version:          iOS 8.1.3 (12B466)
Report Version:      105
Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000001000d49e4
Triggered by Thread:  0
Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed: 
0   Arithmetic                      0x00000001000d49e4 Arithmetic.AppDelegate.(application (Arithmetic.AppDelegate) -> (ObjectiveC.UIApplication, didFinishLaunchingWithOptions : [ObjectiveC.NSObject : Swift.AnyObject]?) -> Swift.Bool).(closure #2) (AppDelegate.swift:0)
1   Arithmetic                      0x00000001000d49f4 reabstraction thunk helper from @callee_owned (@owned ObjectiveC.NSError!) -> (@unowned ()) to @callee_owned (@in ObjectiveC.NSError!) -> (@out ()) with unmangled suffix "_constprop0" (AppDelegate.swift:28)
2   Arithmetic                      0x000000010012299c partial apply forwarder for reabstraction thunk helper from @callee_owned (@in ObjectiveC.NSError!) -> (@out ()) to @callee_owned (@owned ObjectiveC.NSError!) -> (@unowned ()) (Default.swift:0)
3   GameCenterFoundation            0x000000018dbb8f30 __94+[GKScore reportScores:whileScreeningChallenges:withEligibleChallenges:withCompletionHandler:]_block_invoke168 + 40
4   libdispatch.dylib               0x0000000195f153a8 _dispatch_call_block_and_release + 20
5   libdispatch.dylib               0x0000000195f15368 _dispatch_client_callout + 12
6   libdispatch.dylib               0x0000000195f1997c _dispatch_main_queue_callback_4CF + 928
7   CoreFoundation                  0x0000000185181fa0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
8   CoreFoundation                  0x0000000185180048 __CFRunLoopRun + 1488
9   CoreFoundation                  0x00000001850ad0a0 CFRunLoopRunSpecific + 392
10  GraphicsServices                0x000000018e24f5a0 GSEventRunModal + 164
11  UIKit                           0x00000001899deaa0 UIApplicationMain + 1484
12  Arithmetic                      0x00000001000d4334 main (AppDelegate.swift:0)
13  libdyld.dylib                   0x0000000195f3ea04 start + 0

以下是我用来与游戏中心交互的swift代码:(我已经确保成就ID与itunesConnect中的ID相同。)

func reportScore() {
    if !GameCenterEnabled {
        return
    }
    var score = GKScore(leaderboardIdentifier: LeaderboardIdentifier)
    score.value = Score
    GKScore.reportScores([score], withCompletionHandler: { (error) -> Void in
        if error != nil {
            println(error)
        }
    })
}
func updateAchievements() {
    if !GameCenterEnabled {
        return
    }
    /*
    Horizontal_Mode_Conquered
    Vertica_Mode_Conquered
    Master_Hybrid_Mode
    */
    var order = LevelNameAndCompleteGamesDictionary[FormulaType.Horizontal.typeName()]!
    var percent = Double(order.accomplishedGamesCount) / Double(order.targetGamesCount)
    var achievement0 = GKAchievement(identifier: "Horizontal_Mode_Conquered")
    if percent < 1.0 {
        achievement0.percentComplete = Double(percent) * 100.0
    } else {
        achievement0.percentComplete = 100.0
    }
    order = LevelNameAndCompleteGamesDictionary[FormulaType.Vertical.typeName()]!
    percent = Double(order.accomplishedGamesCount) / Double(order.targetGamesCount)
    var achievement1 = GKAchievement(identifier: "Vertica_Mode_Conquered")
    if percent < 1.0 {
        achievement1.percentComplete = Double(percent) * 100.0
    } else {
        achievement1.percentComplete = 100.0
    }
    order = LevelNameAndCompleteGamesDictionary[FormulaType.Cross1H1V.typeName()]!
    percent = Double(order.accomplishedGamesCount) / Double(order.targetGamesCount)
    var achievement2 = GKAchievement(identifier: "Master_Hybrid_Mode")
    if percent < 1.0 {                          
        achievement2.percentComplete = Double(percent) * 100.0
    } else {
        achievement2.percentComplete = 100.0
    }
    var achievements = [achievement0, achievement1, achievement2]
    GKAchievement.reportAchievements(achievements, withCompletionHandler: { (error) -> Void in
        if error != nil {
            println(error)
        }
    })
}

问题似乎得到了解决。我认为问题是由更改项目名称引起的。(我已经改过一次了)。因此,我通过重新创建一个新项目并导入所有旧代码来解决这个问题。然后一切都好了。

现在我的应用程序在应用商店中更新了,崩溃的问题消失了。

最新更新