- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
用户购买商品后,通过输入电子邮件和密码并付款,绝不会调用 updatedTransactions 方法。该项目是定期购买的,但如果不调用 updatedTransactions 方法,我无法执行代码以将项目添加到应用程序。我注意到该商品已购买,因为如果我运行代码来恢复已购买的商品,一切都会正常进行,并且该产品会安装到应用程序中。
这是我为购买产品而复制的代码:
-(IBAction)buyProduct:(id)sender {
NSLog(@"Purchasing: %@", self.product.productIdentifier);
SKPayment *payment = [SKPayment paymentWithProduct:self.product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
按照代码恢复产品:
-(IBAction)restoreProduct:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
我注意到在最后一段代码中有以下行:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
我是否也应该在购买部分添加这一行?
最佳答案
我通过在 buyProduct 方法中添加以下代码解决了这个问题:
-(IBAction)buyProduct:(id)sender {
NSLog(@"Purchasing: %@", self.product.productIdentifier);
SKPayment *payment = [SKPayment paymentWithProduct:self.product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; //added line
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
现在 updatedTransactions 方法在付款前和付款后被调用。
使用以下代码,您可以检查一切是好是坏:
for(SKPaymentTransaction *transaction in transactions) {
if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
[self unlockRemoveiAD];
[OKalertView show];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
if (transaction.transactionState == SKPaymentTransactionStateFailed) {
[alertView show];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
}
关于ios - 为什么从不调用 updatedTransactions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33895799/
用户购买商品后,通过输入电子邮件和密码并付款,绝不会调用 updatedTransactions 方法。该项目是定期购买的,但如果不调用 updatedTransactions 方法,我无法执行代码以
SKPaymentTransactionObserver.paymentQueue:updatedTransactions 返回一组交易。当我付款时,我如何知道我付款的是哪笔交易?当我付款时,它总是返
我有一个应用程序提供自动续订订阅的 IAP。 当应用程序启动时,会调用以下方法,有时会调用多次,但我不确定调用者或原因。 - (void)paymentQueue:(SKPaymentQueue *)
我正在恢复已完成的交易(重复) [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 在 - (void)paymentQueue
这个问题在这里已经有了答案: restoreCompletedTransactions broken? (7 个答案) 关闭 8 年前。 经过 2.5 年的开发(roguelike),我最近发布了我
我收到“此应用程序内购买已购买,它将免费恢复”但未调用代理 updatedTransactions 并且没有任何反应,IAP 未执行。 我已经实现了 Restore Purchase,它运行良好,但我
我在应用内购买时遇到了奇怪的问题... 在我请求产品信息后,有时由于某种原因 paymentQueue:updatedTransactions 会被自动调用。 在我商店的 viewDidLoad 方法
在极少数情况下,我的某些用户似乎无法购买非消耗品。当他们尝试购买时,它不会激活“高级”,并且当他们从当前安装或全新安装中恢复时,paymentQueue: updatedTransactions: 不
我已经在我的应用中实现了自动续订订阅。一切正常。唯一的问题是方法 public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactio
正如标题所描述的,实际有什么不同? 如果我有这个: func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transaction
当我使用以下方案成为restoringCompletedTransactions:时 [[SKPaymentQueue defaultQueue]addTransactionObserver:self
我在 IAP 中有几个产品(在这个例子中有 2 个),我正在使用 UITableView,用户将单击它并选择他们想要购买的产品。但是,我无法在 updatedTransactions 委托(deleg
我一直在测试应用程序内购买的代码,但在调用 updatedTransactions SKPaymentTransactionObserver 委托(delegate)方法时,我无法将交易状态设置为恢复
这几天我一直在用头撞墙,因为过去一切正常,但现在我已经转移到 Mountain Lion,XCode 4.5 和iOS5.1 和iOS6,出现了这个问题,我认为可能与配置开关有关。 我调用了 [[SK
我的代码有问题。 updatedTransactions 函数仅在交易进行时被调用一次。购买并且在交易完成后不会被调用。 func buyProduct(product: SKProduct) {
据我所知,Apple 建议获得购买和恢复按钮(我在我的应用程序的设置 View 中有这些),在其他 View 中我只有购买按钮。 当用户点击“购买”按钮,苹果检测到这个用户已经购买了这个产品,他会要求
当我启动同一个 UIView 并有可能购买 InApp 可购买产品时,我有两个地方。1.用户入职结束2.菜单中的标准位置 从第一次付款开始,我通过 SKPaymentTransactionStateP
您好,我需要在 Inapp-Purchase 中实现恢复功能,为此制作了一个调用方法的“恢复”按钮 -(void)restorePurchasedProductsWithProductId:(NSSt
我正在调试恢复事务,并且在我的调试配置中一切正常: IE我调用: [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 稍后队
我是一名优秀的程序员,十分优秀!