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 哈希的最佳方法是啥?