干杯,

在我看来,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/

10-11 04:34