将首次启动检测添加到*已存在的* iOS应用

时间:2017-10-20 16:43:30

标签: ios upgrade launch

对于尚未首次发布的应用程序,很容易弄清楚如何检测首次启动:在UserDefaults中查找缺少“wasLaunched”Bool或版本号。然后设置它的值。这是在StackOverflow上的几个地方被问及回答。

但是......我正在更新一个已经存在的应用程序,它在第一个版本中没有保存任何UserDefaults信息(任何类型)。在推出新版本时,有没有办法检测以前的版本是否存在并运行?我想不出一个,但事实并非如此。

这很重要,因为新版本会为某些以前免费的功能收取费用。我希望早期的用户不会突然面临功能性的损失。

之前也曾问过这个问题(Detecting the first launch of an app with previous versions),但所有答案都错过了已经存在的应用程序。

请注意,写入UserDefaults也不是万无一失的。如果用户在重新安装或升级之前删除了应用程序,则UserDefaults将消失。然而,这是一个边缘情况,我可以忽略。

1 个答案:

答案 0 :(得分:2)

根据您对评论中前几个问题的回答,您发布的问题确实应该改写为:

我目前有一个免费的应用程序。在下一次更新中,我希望使用应用内购买将一些当前免费功能转换为付费功能。但是,我不希望应用程序的任何现有用户必须为他们已经使用的功能付费。只有以此更新开头的应用的新用户才需要支付应用内购买费用。如何实施我更新的应用程序,以便以前版本的应用程序的下载者无需付费?

鉴于此,您的问题与任何类型的“首次启动”检测无关。您需要查看用户是否“购买”(或下载了)以前版本的应用。

这可以通过执行收据验证来完成。获得并验证收据后,您可以检查收据并获取原始购买日期和原始购买版本。如果该版本是添加付费应用内购买之前的版本,请将用户视为已经进行了应用内购买,并向他们展示应用的付费功能。否则,请检查收据以查看其是否包含应用内购买的数据,并根据需要授予用户访问权限。