gpt4 book ai didi

iOS 的 SKPayment addTransactionObserver & defaultqueue,是怎么回事?

转载 作者:行者123 更新时间:2023-11-28 21:48:11 27 4
gpt4 key购买 nike

如果我需要添加一个事务观察器,以及是否需要删除事务观察器,以及这一切在哪里以及是什么,我都在苦苦挣扎......

我继承的代码包括带有观察者的应用程序委托(delegate)...AppDelegate ->

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
SKPaymentQueue *paymentQueue = [self.injector getInstance:[SKPaymentQueue class]];
[paymentQueue addTransactionObserver:self.purchaseHelper];
}

我正在处理购买助手的恢复部分...采购助手 ->

-(void) beginRestorePurchases:(BOOL)serverRestore {
self.serverRestore = serverRestore;
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}



-(void) paymentQueueRestoreCompletedTransactionsFinished : (SKPaymentQueue *) queue {
for (SKPaymentTransaction *transaction in queue.transactions) {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
}

我目前关心的是恢复购买。 (我意识到我正在为代码的另一部分(购买部分)使用依赖注入(inject)模式,所以它有所不同。我不确定这是否对我的问题也有影响。)

问题是我不知道是否应该添加另一个观察者来恢复。如果我这样做了,iTunes 在恢复时多次提示我会出现一些奇怪的行为。在 SO 帖子中,我看到有人提到删除观察者。如果我在应用程序委托(delegate)级别创建它,您什么​​时候会这样做?

也许我的 SKPaymentQueue * paymentQueue 对象不是 defaultQueue 对象????不知道....

最佳答案

您始终需要在应用生命周期的早期添加您的事务观察器。您无法控制的操作可能导致交易无法完成,操作系统级别队列会将这些重新提供给您的应用程序。我想不出任何常见的、合法的理由来移除观察者。

您只需要一个观察者,该观察者应该是处理所有 IAP 事件的看门人。

您还需要确保对每笔合法完成的交易调用 finish。如果不这样做,您最终可能会将大量重复的(从 SKU 角度来看)交易堆叠在一起。

关于iOS 的 SKPayment addTransactionObserver & defaultqueue,是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291188/

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