【问题标题】:How to set SKProductsRequest time out sec ? What is the default timeout sec for SKProductsRequest?如何设置 SKProductsRequest 超时秒? SKProductsRequest 的默认超时秒数是多少?
【发布时间】:2016-06-04 14:09:21
【问题描述】:

是否可以为 SKProductsRequest 设置超时? 有人知道 SKProductsRequest 的默认超时时间吗?

【问题讨论】:

    标签: ios objective-c timeout in-app-purchase


    【解决方案1】:

    没有开放的苹果api直接设置SKProductRequests超时, 但是您可以实现一些简单的方法来手动设置它。在这种情况下,您需要保留对您的 SKProductsRequest 实例的强引用:

    @property (nonatomic, strong) SKProductsRequest *productsRequest;
    

    然后创建您的请求并使用performSelector:withObject:afterDelay: 在需要的时间间隔内停止它的方法:

    self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[StoreKitManager productsIDSet]];
    self.productsRequest .delegate = self;
    [self.productsRequest  start];
    [self setupTimeout];
    
    - (void)cancelTimeout {
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(stopRequest) object:nil];
    
    }
    
    - (void)setupTimeout {
        [self cancelTimeout];
        [self performSelector:@selector(stopRequest) withObject:self afterDelay:30.0f];
    }
    
    - (void)stopRequest {
        [self.productsRequest cancel];
    }
    

    并且不要忘记取消您的代表的超时:

    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
        [self cancelTimeout];
    }
    
    - (void)requestDidFinish:(SKRequest *)request {
        [self cancelTimeout];
    }
    
    - (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
        [self cancelTimeout];
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2013-12-12
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      相关资源
      最近更新 更多