gpt4 book ai didi

ios - 是否可以为 SKStoreProductViewController loadProductWithParameters 设置超时?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:01 28 4
gpt4 key购买 nike

我目前正在通过 dispatch_async 调用 storeViewController loadProductWithParameters。是否可以设置一个超时值,以便它只尝试获取 X 秒的结果然后放弃?

最佳答案

我通过使用下面的类方法而不是直接调用 loadProductWithParameters 来实现我自己的超时。由于 dispatch_after__block 变量,它会超时。

+ (void)loadProductViewControllerWithTimeout:(NSTimeInterval)timeout
storeKitViewController:(SKStoreProductViewController *)storeKitViewController
parameters:(NSDictionary *)parameters
completionHandler:(void (^)(BOOL result, NSError *error))completionHandler {

__block BOOL hasReturnedOrTimedOut = NO;

[storeKitViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (!hasReturnedOrTimedOut) {
hasReturnedOrTimedOut = YES;
if (completionHandler) completionHandler(result, error);
}
});
}];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (!hasReturnedOrTimedOut) {
hasReturnedOrTimedOut = YES;
if (completionHandler) completionHandler(NO, nil); // Or add your own error instead of |nil|.
}
});
}

我最新的应用程序更新被 Apple 拒绝,因为 loadProductWithParameters 从未调用它的 completionBlock 并阻止我的用户在 iTunes 上购买歌曲...希望这有帮助。

关于ios - 是否可以为 SKStoreProductViewController loadProductWithParameters 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18091020/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com