干杯,
在我看来,SKProductsRequest无法以任何方式处理超时或连接错误。如果成功,它会在其委托(delegate)上调用-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
,否则不会成功。
我想在检索产品时向用户显示某种 Activity 指示器,或者如果无法访问应用商店,则可能会弹出警报。由于(在失败的情况下)没有来自SKProductsRequest的反馈,所以我想知道我应该将该反馈的显示与哪个事件相关联-而不是等待任意时间。
因此,问题是:是否存在一个已知的时间量,在此之后可以安全地假定请求已失败?还是有什么方法可以检查我刚才看不到的待处理请求的状态?
最佳答案
每当SKRequest失败(包括SKProductRequest)时,我就在项目中运行它:
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error
{
alert = [[UIAlertView alloc] initWithTitle:@"In-App Store unavailable" message:@"The In-App Store is currently unavailable, please try again later." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
工作请客。当然,您可以在括号内放置任何东西来代替我的警报,但这对用户来说效果很好。
希望这对您有用。
注意:这是在
SKRequestDelegate
中,而不是在SKProductsRequestDelegate
中,这有点令人困惑。 SKRequestDelegate
用于购买和产品请求。使用request.delegate
的委托(delegate)集可以实现这两种方法。关于ios - SKProductsRequest-如何处理超时/连接错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6541213/