我正在应用程序购买中实施我正在通过
向苹果商店发送请求- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:
[NSSet setWithObjects: featureAId,featureBId,nil]]; // add any other product here
request.delegate = self;
[request start];
}
响应方法
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
[purchasableObjects addObjectsFromArray:response.products];
}
根本没有接听电话。只有在我尝试过十次尝试时才召唤出来。
关于这个的任何想法..? 提前谢谢
答案 0 :(得分:42)
尝试同时实施- (void)request:(SKRequest *)request didFailWithError:(NSError *)error
方法 - 处理您的请求时可能会出现一些错误。
答案 1 :(得分:23)
我遇到了同样的问题,但在我的情况下,原因是我使用自动引用计数,我忘了保留请求。
我的代码就像:
- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
request.delegate = self;
[request start];
}
但委托的产品请求:didReceiveResponse:从未被调用过。
修复将是:
@property (strong, nonatomic) SKProductsRequest *request;
- (void) requestProductData
{
self.request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
self.request.delegate = self;
[self.request start];
// you can nil request property in request:didFailWithError: and requestDidFinish:
}
答案 2 :(得分:6)
我遇到了同样的问题。我创建了一个帮助程序类来处理IAP并检查产品。我最终发现的是我创建的类的实例在响应返回之前被释放,因此委托方法永远不会被调用,因为它们不再存在。
我通过在使用@proprty(强,非原子)调用它的类中保留helper类的实例来解决我的问题......
如果您没有使用帮助程序类并将其编码到现有类中,那么上面的答案将通过保留您的SKProductRequest来起作用。
答案 3 :(得分:1)
我遇到了类似的问题(错误:无法连接到iTunes Store)。将iTunes Beta升级到最新版本后,它又开始工作了。