gpt4 book ai didi

ios - InApp 购买 - paymentQueue : updatedTransactions is not called from specific place

转载 作者:可可西里 更新时间:2023-11-01 04:43:11 25 4
gpt4 key购买 nike

当我启动同一个 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: 方法。

如果是这种情况,你应该:

  • 从您的 ViewController 层次结构中检索正确的观察者并作为观察者传入
  • 将事务观察器的代码移至共享类(例如 AppDelegate 或其他特定单例类)

关于ios - InApp 购买 - paymentQueue : updatedTransactions is not called from specific place,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com