5

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

4

1 に答える 1

1

これを 2 つの方法で解決しました。ライブ アプリの即時クラッシュに対処し、それを引き起こしたコーディング エラーに実際に対処しました。

iOS 7.0.3 の更新により、アプリ内製品データを返す Apple サーバーへの呼び出しに遅延が追加されました。didFinishLaunching から製品リクエストの呼び出しを行っていたので、アプリは十分に速く起動しなかったために強制終了されました。

ライブ アプリのクラッシュに対処するために、アプリのアプリ内購入をすべて一時的に販売対象から外しました。一方、製品データのリクエストを、アプリ内ストアフロントを表示する直前に移動しました。これは、マディが提案した正しいプログラマティック ソリューションです。

于 2013-11-06T12:08:10.457 に答える