16 iphone cocoa in-app-purchase
我正在应用程序购买实施我通过发送请求到苹果商店
- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:
[NSSet setWithObjects: featureAId,featureBId,nil]]; // add any other product here
request.delegate = self;
[request start];
}
Run Code Online (Sandbox Code Playgroud)
响应方法
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
[purchasableObjects addObjectsFromArray:response.products];
}
Run Code Online (Sandbox Code Playgroud)
根本没有接到电话.只有在我试过的十次尝试中召唤出来的时候.
关于这个的任何想法..?提前致谢
Vla*_*mir 44
尝试实现- (void)request:(SKRequest *)request didFailWithError:(NSError *)error方法 - 可能在处理您的请求时出现一些错误.
hec*_*ctr 24
我面临同样的问题,但在我的情况下,原因是我使用自动引用计数,我忘了保留请求.
我的代码就像:
- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
request.delegate = self;
[request start];
}
Run Code Online (Sandbox Code Playgroud)
但委托的产品请求: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:
}
Run Code Online (Sandbox Code Playgroud)
我有同样的问题.我创建了一个帮助程序类来处理IAP并检查产品.我最终发现的是我创建的类的实例在响应返回之前被释放,因此委托方法永远不会被调用,因为它们不再存在.
我通过在类中使用@proprty(强,非原子)调用它来保留helper类的实例来解决我的问题...
如果您没有使用帮助程序类并将其编码到现有类中,那么上面的答案将通过保留您的SKProductRequest来起作用.