之前一直是使用 MKStoreKit 在做 IAP(In-App Purchases,应用内支付),API 简单好用,不过作者许久不更新,最近改为 RMStore
Unknown pruduct identifier
IAP 支付时需要提前请求商品信息,商品信息获取到之后才能购买,官方 demo 中有相关代码:
_products = @[@"net.robotmedia.test.consumable",
@"net.robotmedia.test.nonconsumable",
@"net.robotmedia.test.nonconsumable.2"];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray *products, NSArray *invalidProductIdentifiers) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
_productsRequestFinished = YES;
[self.tableView reloadData];
} failure:^(NSError *error) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Products Request Failed", @"")
message:error.localizedDescription
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"")
otherButtonTitles:nil];
[alertView show];
}];
可以放在 AppDelegate 中程序启动就去下载
Cannot connect to iTunes Store
这个问题是苹果的低级错误,解决方法也是千奇百怪,比如 stackoverflow 的这篇讨论 http://stackoverflow.com/questions/2359739/iphone-store-kit-cannot-connect-to-itunes-store
尝试了一圈都不行,最后 restore purchase 搞定
IAP 状态不对
填写好应用信息之后,先不要急着提交二进制文件,正确的操作流程:
- 填写应用信息
- 创建 IAP
- 在应用信息修改页面下方选择上一步创建的 IAP 来更改 IAP 状态
- 程序里调试 IAP
- 申请上传并提交二进制文件