【问题标题】:From Free to In-App Purchase swift / iOS App从免费到应用内购买 swift / iOS 应用
【发布时间】:2021-05-02 11:00:16
【问题描述】:

我已经向 App Store 发布了一个应用程序,并且也对其进行了一些更新。目前该应用程序是免费的。我的计划是免费下载,但使用有限。通过应用内购买用户可以解锁无限版本。

所以我希望现有用户仍然可以免费使用该应用程序,但如果新用户没有通过 IAP 购买无限制版本,则他们的使用量将受到限制。那么我应该如何处理这种情况呢?我阅读了一些关于获取应用商店收据和阅读 original_app_version 的文章,但在这里有点迷失了。这是唯一的出路吗?

干杯, 杰米

【问题讨论】:

    标签: ios swift in-app-purchase app-store


    【解决方案1】:

    正确的解决方案是依赖原始应用版本。这样,您的用户无需采取任何行动(正如每个用户所期望的那样),您也无需向他们解释为什么他们现在必须购买东西,这是免费的。另外,目前尚未安装您的应用或在您切换阶段未使用该应用的用户怎么办?

    依靠原始应用版本更适合未来,对您和您的用户来说更舒适。此外,您可以跳过转换阶段,直接从新用户身上赚钱。

    由于您想集成应用内购买,因此您必须学习如何使用收据。那么为什么不从一开始就做呢。

    如何访问收据并获取原始应用版本?

    我对访问收据的建议是TPInAppReceipt。它易于集成并定期获取更新。在您的组件中验证收据和购买您只需要做:

    do {
      /// Initialize receipt
      let receipt = try InAppReceipt.localReceipt() 
      let originalAppVersion = receipt.originalAppVersion
      if Float(originalAppVersion) < YOUR_LATEST_FREE_VERSION {
        // unlock all features
      }
      
    } catch {
      // handle no receipt error
    }
    

    【讨论】:

    • 是的,确实如此。正如您提到的,第一个解决方案候选中有一些缺点。感谢您提供访问收据的建议。我也会检查那个。到目前为止,我一直试图避免使用任何第三方代码...
    • 顺便说一句,是不是实际比较的是内部版本号而不是实际的应用程序版本?目前我的内部版本号不是唯一的,但由于我现在将所有已发布的版本都标记为 build '1' -> 我可以稍后开始在每个版本中增加它。
    • 收据中的 orignalAppVersion 字段对应于最初购买时 Info.plist 文件中的 CFBundleVersion(iOS 中)或 CFBundleShortVersionString(macOS 中)的值。您可以将其设置为任何您想要的。我们使用了提交计数
    【解决方案2】:

    我现在要做的是设置应用内购买,但要免费。这将允许现有用户免费购买该应用程序。然后,在未来的某个时间点,将价格更改为您想要的任何价格,已经免费购买的用户可以稍后在需要时恢复购买,而无需支付费用。

    【讨论】:

    • 不错!这实际上是一个非常简单的解决方案!谢谢你:)
    • @jmaggis 没问题,既然你提出了这个话题,我正在考虑用我自己的一个应用程序做一些类似的事情,以获得更多的下载量和动力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多