SKProductsRequest在启动时使用iOS 7.0.3崩溃应用程序

时间:2013-10-31 15:14:33

标签: ios crash startup

我们的应用程序崩溃的报告在昨晚开始泛滥。许多升级到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中,我们进行调用以请求产品数据。我们需要在另一个线程中执行此操作吗?其他人有这个问题吗?

1 个答案:

答案 0 :(得分:1)

我们通过两种方式解决了这个问题,解决了即时实时应用崩溃问题,然后实际解决了触发它的编码错误。

iOS 7.0.3更新增加了对返回应用内商品数据的Apple服务器调用的延迟。由于我们正在从didFinishLaunching进行产品请求调用,我们的应用程序因为没有足够快地启动而被杀死。

为解决实时应用崩溃的问题,我们暂时删除了应用从应用中购买的所有内容。 与此同时,我们将产品数据请求移至呈现应用内店面之前 - 正如maddy所建议的那样正确的程序化解决方案。