一、前言
SKStoreViewController在iOS 11上是正常没啥问题的,但到了iOS 12突然导致了大范围的闪退。这其实本质是苹果的StoreKit开发人员犯了一个很简单的错误导致的;
二、问题描述
从iOS 12 beta5开始我们线上逐渐多了如下堆栈的crash,到iOS 12.1发布这个问题一直依旧存在,且越来越厉害,成为我们线上top 3的crash之一;
0 StoreKit 0x000000023bedcd68 ___60-[SKStoreProductViewController _requestRemoteViewController]_block_invoke.349 + 348
1 libdispatch.dylib 0x00000002279036c8 __dispatch_call_block_and_release + 24
2 libdispatch.dylib 0x0000000227904484 __dispatch_client_callout + 16
3 libdispatch.dylib 0x00000002278b09ec __dispatch_main_queue_callback_4CF$VARIANT$mp + 1068
4 CoreFoundation 0x0000000227e5a1bc ___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
5 CoreFoundation 0x0000000227e55084 ___CFRunLoopRun + 1964
6 CoreFoundation 0x0000000227e545b8 CFRunLoopRunSpecific + 428
7 GraphicsServices 0x000000022a0c8584 GSEventRunModal + 96
8 UIKitCore 0x0000000254e4cbc8 UIApplicationMain + 204
9 mttlite 0x00000001023f