昨夜、アプリのクラッシュに関する報告が殺到し始めました。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 で、製品データを要求する呼び出しを行います。別のスレッドでこれを行う必要がありますか? この問題を抱えている他の人はいますか?