fri*_*ley 49 app-store in-app-purchase ios
我目前在商店里有一个付费应用程序.Apple还没有允许提交'lite'版本,因此我别无选择,只能将当前的付费版本更新为免费增值(在应用内购买)模式.我有一个问题,即第一次购买应用程序的v1用户不会失去功能.
有没有办法确定应用程序是否已从以前安装的版本更新,以便我可以解锁应用程序的付费部分?
两个相似的问题(几个月前):
spi*_*her 24
现在有一种Apple批准的方法可以在iOS和macOS上执行此操作.可以使用信息密钥从收据中获取最初下载的应用版本Original Purchased Version.然后,如果该版本早于切换到IAP,则可以决定是否解锁功能.
例如,一旦您检索到收据信息:
NSArray *versionsSoldWithoutIAP = @[@"1.0", @"1.1", @"1.2", @"1.3"];
NSString *originalPurchasedVersion = [receiptInfoDict objectForKey:@"Original Purchased Version"];
for (NSString *version in versionsSoldWithoutIAP) {
if ([version isEqualToString:originalPurchasedVersion]) {
// user paid for the currently installed version
}
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅WWDC 13视频使用收据保护您的数字销售.在5点40分,主持人评论道:"我认为今年收据中最令人兴奋的事情,特别是对于你们,如果你们在商店里有付费应用程序,我们已经在收据中包含了可以让你们的信息.通过应用内购买实现从付费应用转变为免费应用,而不会留下已经为您的应用付费的所有客户."
小智 20
使用iOS7,iOS应用程序可以验证应用商店收据,其中包含应用下载日期.通过使用此下载日期,您可以确定客户以前是否购买过
And*_*rew 11
首先,我只想说我个人认为免费增值模式很棒.对许多开发人员来说,它已经非常好用了.人们喜欢下载免费的应用程序,并且会随心所欲地做到这一点,但是在花费0.99美元之前更加关注应用程序(这是由于免费的影响 - 有关更多信息,请查看Dan Ariely的书Predictably Irrational)
有关免费增值的更多信息,请谷歌 - 有大量关于它成功的文章.
好的,回到实际问题:
有几种方法你可以像这样处理这种情况,虽然不幸的是这里没有一个是傻瓜证明.
另一个,不是几乎作为万无一失的解决方案(但更快/更容易实现)是使用NSUserDefaults.您可以在用户进行购买时存储对象,也可以使用用户安装应用程序的日期存储对象.然后,如果您发布将应用转换为免费增值的更新.然后在新的更新中,检查用户所做的购买或安装的日期,并做出相应的反应.有关如何使用的信息NSUserDefaults,请查看我关于实现该问题的另一个问题的答案:NSUserDefaults和应用程序版本.但是这个解决方案确实存在以下缺陷:
如果用户删除了您的应用,NSUserDefaults则会永久丢失
总而言之,这是一个难题,没有很多简单/完美的选择.
无论如何,
希望有所帮助!