我在App Store上拥有付费应用的现有用户。我想将应用转换为具有可解锁功能的免费应用。有没有办法将现有用户推送到这个允许付费“升级”的新免费版本,以便现有用户被视为他们已经为此升级付费了?或者,正如我所料,当应用程序开发向前推进时,我们是否维护两个独立的代码库 - 代替通过强迫他们再次购买来激怒我们现有的客户?
我知道,由于Apple今天才开始允许在免费应用中支持应用内购买,因此最初不会有很多权威性的答案......
答案 0 :(得分:5)
一种可能的解决方案可能是将代码放入付费应用程序的新更新中,该更新将翻转您用于识别付费客户的任何开关(无论是在属性列表中还是其他形式)。如果您为现有付费客户提供足够的升级时间,则应将其标记为已付款。然后,将您的付费版本设为免费/付费升级版本,并从商店中删除现有的“精简版”版本。新客户必须使用应用内购买来解锁完整版本,但现有客户将被确认为已付款。
问题在于如何让所有现有客户升级到中间版本,以便及时翻转“付费”交换机,以将应用程序迁移到免费/付费升级模型。
答案 1 :(得分:5)
是否有某种方法可以判断您的应用之前是否已经投放过? (比如你在退出时写的设置,创建的数据文件,第一次运行的日期戳?)
如果是这样,您可以将代码放入升级中,如:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (nil == [defaults objectForKey:@"app_v2_has_been_run"]) {
if (nil == [defaults objectForKey:@"some_key_v1_makes"] {
// they never had v1 of your app
} else {
// they had v1 of your app, so unlock some stuff for them
}
[defaults setObject:[NSDate date] forKey:@"app_v2_has_been_run"]; // or whatever
}
答案 2 :(得分:2)
对我来说,维护两个单独的代码库不是一个好的解决方案,因为你需要维持2个应用程序购买(更糟糕的是在应用程序购买服务器),也许2个游戏中心,并分开你的下载(因此可能不太明显)因为可能会有一些新用户直接购买付费应用。
但是要将付费应用程序更改为免费应用程序,我没有办法做到这一点,主要原因是如果你升级你的设备,所以清理它,你将没有什么可以得到免费的应用程序第一批支付费用的用户,以及真正愤怒的用户。
最好的方法是能够让苹果数据库知道用户何时购买应用程序或类似的东西。 如果有人知道这样做的伎俩,我会爱他分享它;)
答案 3 :(得分:1)
最可靠的解决方案是进行收据验证。如果您的应用没有与之通信的服务器,则可以在OpenSSL的帮助下在设备上进行操作。 (有关详细信息,请查看有关收据验证的WWDC视频。) 关键是收据具有一个属性,可告诉您用户最初购买应用程序的版本。根据这些信息,您可以为现有客户解锁功能。