您已购买此 App 内购买项目。此项目将免费恢复。This In-App purchase has already been bought.It will be restored for free.
2016-06-29 16:30
676 查看
问题如下:
当内购产品类型为:消耗型项目
内购沙盒测试账号在支付成功后,再次购买相同 ID 的物品,会提示如下内容的弹窗。
解决方法:要实现自己的恢复机制。
在使用[[SKPaymentQueue defaultQueue] addPayment:payment];
将支付信息添加进苹果的支付队列后,苹果会自动完成后续的购买请求,在用户购买成功或者点击取消购买的选项后回调
方法返回响应的结果信息,在该方法内除了得到响应的支付信息编写自身的业务的代码外还要记得调用
方法通知苹果的支付队列该交易已经完成,否者就会已发起相同 ID 的商品购买就会有此项目将免费恢复的提示。
当内购产品类型为:消耗型项目
内购沙盒测试账号在支付成功后,再次购买相同 ID 的物品,会提示如下内容的弹窗。
您已购买此 App 内购买项目。此项目将免费恢复。
解决方法:要实现自己的恢复机制。
在使用[[SKPaymentQueue defaultQueue] addPayment:payment];
将支付信息添加进苹果的支付队列后,苹果会自动完成后续的购买请求,在用户购买成功或者点击取消购买的选项后回调
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction;
方法返回响应的结果信息,在该方法内除了得到响应的支付信息编写自身的业务的代码外还要记得调用
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
方法通知苹果的支付队列该交易已经完成,否者就会已发起相同 ID 的商品购买就会有此项目将免费恢复的提示。
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction{ for(SKPaymentTransaction *tran in transaction){ switch (tran.transactionState) { case SKPaymentTransactionStatePurchased: { NSLog(@"交易完成"); [[SKPaymentQueue defaultQueue] finishTransaction:tran]; } break; case SKPaymentTransactionStatePurchasing: NSLog(@"商品添加进列表"); break; case SKPaymentTransactionStateRestored: NSLog(@"已经购买过商品"); break; case SKPaymentTransactionStateFailed:{ NSLog(@"交易失败"); [[SKPaymentQueue defaultQueue] finishTransaction:tran];} break; default: break; } } }
相关文章推荐
- App内购通关:(一)非代码准备篇
- App内购通关:(二)代码篇
- 【爬坑总结】产品提交苹果审核之:苹果IAP内购规则
- Android ListView 图片异步加载和图片内存缓存
- iOS 拨打电话的三种方式
- iOS 中的编码问题总结
- Android 四大组件Broadcast
- js调用java方法的遇到的坑Uncaught TypeError: Object [object Object] has no method
- IOS-8-Xcode6 使用MJRefresh报错:Too many arguments to function call, expected 0, have 3
- android SwipeRefreshLayout google官方下拉刷新控件
- Java - a simple JMS client application
- Android使用Activity用作弹出式对话框
- android中Mediaplay的使用
- 深入解析Android中的RecyclerView组件
- Android MediaPlayer使用方法简单介绍
- 【Objective-C基础】委托、非正式协议、正式协议
- 移动端WebApp隐藏地址栏的方法
- 【Objective-C基础】自动释放池
- 【Objective-C基础】NSNumber,NSValue和NSData
- swift单例-Singleton以及a declaration cannot be both 'final' and 'dynamic'