关于我们的应用程序崩溃的报告昨晚开始大量涌现。许多升级到 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 所建议的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)