Swift InAppPurchases - 为以前的客户提供终身免费订阅

Posted

技术标签:

【中文标题】Swift InAppPurchases - 为以前的客户提供终身免费订阅【英文标题】:Swift InAppPurchases - give previous customers a free lifetime subscription 【发布时间】:2021-07-25 15:39:00 【问题描述】:

所以我的应用程序在几个月前发布到 AppStore 并且可以免费下载。我获得了 2k 用户。现在我正在实现一个自动更新订阅模式,因此未来的用户可以免费使用演示应用并订阅以获得完整的内容。

我想从“第一天”开始感谢我的用户,让他们无需支付订阅费用即可免费访问所有内容。

是否有一种“给定的方式”来实现这一点,因为这似乎是一种常见的情况。如果没有,有 IAP 经验的人是否有聪明的解决方法来处理/实施它?

谢谢大家:D

【问题讨论】:

欢迎来到 ***!在我看来,最好的方法是检查收据字段originalAppVersion 以确定用户是否可以免费使用您的应用程序。有关此问题的详细答案,请参见此处:***.com/a/65950927/1128713。 【参考方案1】:

保罗的回答对我不起作用。其他解决方案也没有。 但我设法找到了解决方案。

如果您在应用程序中使用 CoreData 作为数据库,您可以使用我为我的应用程序找到的解决方案。

想法:

如果有人从应用商店下载该应用,他将在您的应用中收到最新的数据库版本。

如果有人更新您的应用,coredata 将执行迁移。并且此迁移通过您的数据库版本从下到上更新。

通过这种行为,我们有机会区分这两种情况。

解决方案:我们创建了两个新的数据库版本。一个只会由以前的用户更新。我们将在这里设置一个标志。新用户永远不会接触到它。

第一个新的将在任何实体(例如用户)中创建一个新的属性字段,例如isFormerUser 作为布尔值。您可以将其默认设置为 true。

现在我们创建一个第二个新(最新的)。通过核心数据映射器,如果迁移,它将采用 $source 属性。 因此,在这种情况下,所有FormerUser 都设置为True,并将保留该属性。 这里将默认为 False,因此如果 $source 不存在,请将其设置为 false(新用户)。

这个解决方案很好,因为它通过迁移/更新设置一次,你不必在你的应用中携带硬编码的东西。现在只需从 CoreData 为该属性创建一个加载/获取函数,然后设置要在 if 语句中使用的变量。

【讨论】:

以上是关于Swift InAppPurchases - 为以前的客户提供终身免费订阅的主要内容,如果未能解决你的问题,请参考以下文章

Swift/Xcode 9 - 应用内购买 - 在展开可选值时意外发现 nil

如何为带有应嵌入视图控制器的句子的文本文件制作 iOS Swift“应用内购买”托管内容 pkg 文件?

将弹出框添加到以编程方式添加的 UIBarButtonItem 并将图像添加到相同的弹出框 Swift

将 json 格式的键值对转换为以符号为键的 ruby​​ 哈希的最佳方法是啥?

Python:如何将 QTableWidget 的列设置为以日期格式显示

将查询结果显示为以逗号分隔的文字