恢复应用内购买时检测订阅详细信息

Posted

技术标签:

【中文标题】恢复应用内购买时检测订阅详细信息【英文标题】:Detecting subscription details when restoring in-app purchase 【发布时间】:2021-12-21 03:25:00 【问题描述】:

通常我会整理和调查我的编码问题,但是,这个问题让我很困惑,我花了一天时间浏览 ***、github、youtube、apple 开发人员文档,但无济于事。

我在 xcode v13、ios 13 中编写了一个应用程序,该应用程序具有应用内购买功能。对于应用内购买,我有 2 个自动续订订阅,一个用于每月订阅,另一个用于年度订阅。我正在测试可以正常工作的恢复过程。我使用了标准的苹果代码。但是,我要做的是建立/检测正在恢复的服务,即。假设用户注册了年度订阅,那么当应用内恢复完成后,我试图检测用户恢复是针对年度订阅而不是每月订阅。

正如我所说,我很挣扎,尝试了很多很多事情,但无济于事。有没有其他人这样做过,如果有的话,你能指点一下你是如何做到的吗?

如果您以前这样做过,请提前感谢大家的指导......

【问题讨论】:

【参考方案1】:

好的,所以在花了一天时间浏览许多来源但一无所获之后,我偶然发现了 2015 年的一个小块,它已经解决了这个问题。回顾一下——我想做的是确定客户之前购买的“哪个”应用内购买订阅正在恢复,以便我可以调整场景/用户界面以反映之前进行的应用内购买。为此,我需要找到一种方法来确定应用内购买标识符。说了这么多,要插入的神奇 [var identifier....] 代码如下所示,并进入您检测 SKPaymentQueue .restored 条件的代码部分:

案例.restored:

                var identifier : NSString = transaction.payment.productIdentifier as NSString
                print("Restore identifier is \(identifier)")
            
                UserDefaults.standard.set(true, forKey: myProductID)
            
                SKPaymentQueue.default().finishTransaction(transaction)


            
               

【讨论】:

以上是关于恢复应用内购买时检测订阅详细信息的主要内容,如果未能解决你的问题,请参考以下文章

获取应用内结算用户帐户详细信息

Android - 亚马逊应用内购买

恢复应用内购买

应用内购买获取空白 Sku 详​​细信息列表

区分两个用户在应用程序中进行应用程序内购买以购买不同用户的不可更新订阅?

区分应用内 iTunes 的产品