SKProduct 崩溃 - 仅在商店版本的应用程序中
SKProduct crash - only in store version of app
我有一个 swift 应用程序,其产品代码低于 SK
func validateProductIdentifiers() {
let identifiers:NSSet = NSSet(array: kProductIdentifiers)
let productRequest = SKProductsRequest(productIdentifiers: identifiers)
productRequest.delegate = self
productRequest.start()
}
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
let product:SKProduct = response.products[0] as SKProduct
homeView!.stopActivityAnimating()
loadBulletBuy()
bulletBuy!.loadBuyData(response)
}
我已经将这个应用程序作为我的设备进行了将近一个月的测试,并且在调用此方法期间该应用程序从未 failed/crashed。
现在我的应用程序上线了,我发现我的应用程序在上述方法中崩溃了。我设备的崩溃日志
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 FrontLine 0x000000010016654c @objc FrontLine.GameViewController.productsRequest (FrontLine.GameViewController)(ObjectiveC.SKProductsRequest!, didReceiveResponse : ObjectiveC.SKProductsResponse!) -> () (GameViewController.swift:0)
1 StoreKit 0x0000000186638dac __34-[SKProductsRequest _handleReply:]_block_invoke + 540
2 libdispatch.dylib 0x0000000192cb53a8 _dispatch_call_block_and_release + 20
3 libdispatch.dylib 0x0000000192cb5368 _dispatch_client_callout + 12
4 libdispatch.dylib 0x0000000192cb997c _dispatch_main_queue_callback_4CF + 928
5 CoreFoundation 0x0000000181eddfa0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
6 CoreFoundation 0x0000000181edc048 __CFRunLoopRun + 1488
7 CoreFoundation 0x0000000181e090a0 CFRunLoopRunSpecific + 392
8 GraphicsServices 0x000000018afa35a0 GSEventRunModal + 164
9 UIKit 0x000000018673aaa0 UIApplicationMain + 1484
10 FrontLine 0x0000000100189640 main (AppDelegate.swift:0)
11 libdyld.dylib 0x0000000192cdea04 start + 0
我做了一些搜索,发现这可能是由于委托的重新分配,在我的例子中是 VC。我现在正在尝试一个新的解决方案。
但我无法理解为什么该应用程序从未在我的测试运行中崩溃,而仅在生产中崩溃。
我尝试安装我的开发版应用程序,应用程序运行流畅,就像我安装应用程序商店版本时崩溃一样。
关于如何防止此类故障的任何见解都会有所帮助
谢谢
问题在 production.Looks 大约 3 小时后消失,就像某些支付流程滞后于实际应用发布。
我有一个 swift 应用程序,其产品代码低于 SK
func validateProductIdentifiers() {
let identifiers:NSSet = NSSet(array: kProductIdentifiers)
let productRequest = SKProductsRequest(productIdentifiers: identifiers)
productRequest.delegate = self
productRequest.start()
}
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
let product:SKProduct = response.products[0] as SKProduct
homeView!.stopActivityAnimating()
loadBulletBuy()
bulletBuy!.loadBuyData(response)
}
我已经将这个应用程序作为我的设备进行了将近一个月的测试,并且在调用此方法期间该应用程序从未 failed/crashed。
现在我的应用程序上线了,我发现我的应用程序在上述方法中崩溃了。我设备的崩溃日志
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 FrontLine 0x000000010016654c @objc FrontLine.GameViewController.productsRequest (FrontLine.GameViewController)(ObjectiveC.SKProductsRequest!, didReceiveResponse : ObjectiveC.SKProductsResponse!) -> () (GameViewController.swift:0)
1 StoreKit 0x0000000186638dac __34-[SKProductsRequest _handleReply:]_block_invoke + 540
2 libdispatch.dylib 0x0000000192cb53a8 _dispatch_call_block_and_release + 20
3 libdispatch.dylib 0x0000000192cb5368 _dispatch_client_callout + 12
4 libdispatch.dylib 0x0000000192cb997c _dispatch_main_queue_callback_4CF + 928
5 CoreFoundation 0x0000000181eddfa0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
6 CoreFoundation 0x0000000181edc048 __CFRunLoopRun + 1488
7 CoreFoundation 0x0000000181e090a0 CFRunLoopRunSpecific + 392
8 GraphicsServices 0x000000018afa35a0 GSEventRunModal + 164
9 UIKit 0x000000018673aaa0 UIApplicationMain + 1484
10 FrontLine 0x0000000100189640 main (AppDelegate.swift:0)
11 libdyld.dylib 0x0000000192cdea04 start + 0
我做了一些搜索,发现这可能是由于委托的重新分配,在我的例子中是 VC。我现在正在尝试一个新的解决方案。
但我无法理解为什么该应用程序从未在我的测试运行中崩溃,而仅在生产中崩溃。
我尝试安装我的开发版应用程序,应用程序运行流畅,就像我安装应用程序商店版本时崩溃一样。
关于如何防止此类故障的任何见解都会有所帮助
谢谢
问题在 production.Looks 大约 3 小时后消失,就像某些支付流程滞后于实际应用发布。