- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我启动同一个 UIView 并有可能购买 InApp 可购买产品时,我有两个地方。1.用户入职结束2.菜单中的标准位置
从第一次付款开始,我通过 SKPaymentTransactionStatePurchasing 获得更新的交易:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
DLog(@"updatedTransactions");
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
// I get here when the controller is initiated from menu, not from my user onboarding
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
break;
case SKPaymentTransactionStatePurchasing:
// I get here
break;
default:
break;
}
}
}
但是当用户完成交易时永远不会调用此方法。
当我从菜单启动同一个 Controller 时,一切正常。
有什么想法吗?
谢谢
最佳答案
可能您在上述两个 Controller 之一中设置了错误的事务观察器(或未设置)。
为了在交易更新时收到通知,您必须以这种方式添加观察者:
[[SKPaymentQueue defaultQueue] addTransactionObserver:something];
something
可以是 self
(如果您的 paymentQueue:updatedTransactions:
方法在 self
上)或另一个对象。
如果你发布两个 Controller 的相关代码( Controller 名称和调用 addTransactionObserver:
方法,上面提到的加上一点上下文)我可以给你更多的信息,但在那之前我可以做一些假设。
假设您有两个 Controller :
UserOnboardingController
升级 Controller
你说在 UpgradeController
中它工作正常,这可能是因为当加载 Controller 时(例如在 viewDidLoad:
中)有一个调用
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
paymentQueue:updatedTransactions:
是 UpgradeController
的方法之一。
但是,当您在 UserOnboardingController
上时,您不会调用或将错误的观察者传递给 addTransactionObserver:
方法。
如果是这种情况,你应该:
AppDelegate
或其他特定单例类)关于ios - InApp 购买 - paymentQueue : updatedTransactions is not called from specific place,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387604/
我正在构建一个包含应用内购买的应用。该应用程序有 6 种待售产品(全部为消耗品)。 该应用程序能够使用以下代码识别可供购买的产品(来自 itunes connect): override func v
SKPaymentTransactionObserver.paymentQueue:updatedTransactions 返回一组交易。当我付款时,我如何知道我付款的是哪笔交易?当我付款时,它总是返
我正在尝试使用以下代码进行交易: SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.this.is.where.
当用户在app purchase中重新购买时,paymentQueue::updatedTransactions应该被iOS调用吗? 情况是:如果用户重新购买产品,代码中没有调用任何内容,所以我无法将
当我点击我的任何一个 IAPS 时,会出现一条消息说 IAP 已经购买(事实并非如此)并将免费恢复,然后没有任何反应,IAP 不会执行。 这是我在控制台中得到的: No Value. IAP is e
我在 Swift 中有一个 iOS 应用程序,它实现了 paymentQueue(_:shouldAddStorePayment:for:) SKPaymentTransactionObserver
当我启动同一个 UIView 并有可能购买 InApp 可购买产品时,我有两个地方。1.用户入职结束2.菜单中的标准位置 从第一次付款开始,我通过 SKPaymentTransactionStateP
问题:我调用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 它返回到我的观察者 paymentQueueRestoreCo
我是一名优秀的程序员,十分优秀!