SKProductsRequest在iOS 7.0.3启动时崩溃的应用程序
我们应用程序崩溃的报告昨晚开始泛滥。 升级到7.0.3的许多用户在启动时发生应用程序崩溃。 分析iTunes崩溃日志是由于该应用程序因启动时间太长而死亡。 显然,检查可用的应用程序内购买的电话是什么导致了崩溃。 我们删除了销售中的所有应用内购买,现在用户正在报告该应用正在运行。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // earlier stuff... [self requestProductData]; // ask for in-app purchase localized prices/names [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; // process any pending transactions // more stuff... } - (void) requestProductData { NSMutableSet * prodSet = [[[NSMutableSet alloc] initWithCapacity:10] autorelease]; StoreItem * curStoreItem; for(int j=0; j<[storeArr count]; j++) { curStoreItem = [storeArr objectAtIndex:j]; [prodSet addObject:curStoreItem.productID]; } SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:prodSet]; request.delegate = self; [request start]; }
在didFinishLaunchingWithOptions中,我们打电话要求产品数据。 我们是否需要在另一个线程中做这个? 还有谁有相同的问题吗?
我们通过两种方式解决了这个问题,解决了即时的应用程序崩溃,然后实际解决了触发它的编码错误。
iOS 7.0.3更新增加了对返回应用内商品数据的苹果服务器调用的延迟。 由于我们正在通过didFinishLaunching进行产品请求调用,因此我们的应用程序因无法快速启动而被杀害。
为了解决实时应用程序崩溃,我们暂时删除所有应用程序从应用程序购买销售。 与此同时,我们将产品数据请求移到了展示应用程序店面之前 – 正如maddy所build议的正确的程序化解决scheme。