【发布时间】:2013-04-16 15:03:30
【问题描述】:
我按照 Ray Wenderlich 教程书实现了一个简单的非消耗性应用内购买机制。
当我的应用启动时,我会发起产品信息请求:
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequest start];
创建了 SKProductRequest。它有一个内存地址,但没有其他任何事情发生。没有一个委托方法被调用:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Product info received...");
NSArray *products = response.products;
for (SKProduct *product in products) {
NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue);
}
self.productsRequest = nil;
}
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
NSLog(@"Failed to load list of products");
self.productsRequest = nil;
}
我检查了两次:
- 在 iTunes Connect 中完全设置应用程序。
- ITC 中应用的状态为“准备上传”
- 添加了一个非消耗性 IAP。
- IAP 产品在 ITC 中的状态为“准备提交”
- 应用程序和 plist 中的应用程序 ID 都是 com.mycompany.myapp。检查了两次。
- IAP 使用 com.mycompany.myapp.productname(对请求使用完全相同的 ID)。
- 在 ITC 中创建了一个测试用户帐户。
- 尚未向 Apple 提交任何内容。
- 我的 Mac 可以访问互联网。
- 控制台或屏幕上没有其他消息。
Ray Wenderlich 的书没有提到除此之外我必须做任何其他事情。
仅一次我看到了一个 -didFailWithError: call to my delegate on the Device,但它再也没有出现过。我的代表不会在设备或模拟器上都被调用。我让它运行了几分钟没有任何反应。
iTunes Connect 给出了这个令人困惑的警告:
您的首次应用内购买必须与新应用一起提交 版本。从版本的应用内购买部分中选择它们 详细信息页面,然后单击准备上传二进制文件。
在能够测试应用内购买之前是否需要这样做?
【问题讨论】:
-
使用 Xcode 5.1,IAP 测试可以在模拟器中正常工作。
标签: iphone ios ipad in-app-purchase