遇到特定于iOS 4.0的SKProductsRequest的问题。有问题的代码:调用[SKProductsRequest start]在iOS 4.0上挂起
- (void)requestProductData
{
NSSet *productIdentifiers = [NSSet setWithObjects:kLimitedDaysUpgradeProductId, kUnlimitedUpgradeProductId, nil];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"didReceiveResponse");
}
当[SKProductsRequest开始]被调用时,该productsRequest:didReceiveResponse:委托方法永远不会调用;此外,整个应用程序挂起,并完全没有响应输入。很明显,这对我们的iOS 4.0用户来说是一个巨大的问题,因为它不仅打破了付款,而且使应用程序完全无法使用。
一些其他的事情要注意:这只发生在iOS 4.0; iOS 4.2,3.x都很好。另外:如果委托没有在SKProductsRequest上设置(即注释掉“self.productsRequest.delegate = self”这一行),该应用程序不会挂起(但当然在这种情况下,我们无法获得产品信息)。此外,问题仍然重现了产品请求中的所有内容:didReceiveResponse:回调(该方法从未真正被调用)。最后,如果productIdentifiers NSSet对象初始化为空集,则挂起不会发生。
有没有人经历过这个?对这里可能发生的事情有任何想法/想法,以及我们如何能够解决这个问题?
注意:事实证明,这是我们实现的类别的一个问题,它会覆盖NSString方法,并导致它在由低级别应用内SDK调用时在无限循环中运行。所以,SDK没有一个通用的问题。获得的教训:不要覆盖核心可可方法! – figelwump 2011-02-22 19:45:44