iphone - iOS StoreKit 旧版/升级支持的最佳实践是什么?

标签 iphone ios upgrade legacy storekit

我正在开发一个 iPhone 应用程序,迄今为止,它使用的是统一定价模型。在下一个版本中,计划是降低基本功能集和价格,然后让用户可以选择为功能包进行应用内购买。

添加应用内购买似乎非常简单。我担心的是,我应该如何处理对当前拥有该应用程序的用户的旧支持,因为在升级时,他们应该仍然可以访问所有功能。 IE。旧用户不应失去对功能的访问权限;他们应该被视为已经支付了费用。

我认为,解决这个问题的最简单方法是对 plist 文件(或 NSUserDefaults)中是否存在标志进行一些例行测试:如果标志不存在,则它是从以前的版本升级的。

另一个是当内核检测到应用程序的更新版本首次启动时触发的一些回调。但是,我在可用文档中找不到太多关于这种支持的信息。

任何人都可以提出建议吗?

编辑:还有两个相关的场景需要解决:

1) 用户安装了旧版本的应用程序。他们升级,但后来卸载了该应用程序。当他们重新安装(来自商店的新版本)时,他们应该仍然可以访问旧功能。

2) 用户卸载了旧版本的应用程序,但决定从商店安装更新版本。就应用程序而言,这是一个全新的安装。

(1) 似乎可以通过让升级过程在 StoreKit 中创建一些 0 美元的购买来解决。这样一来,Apple 对恢复应用程序(和购买)的支持应该会起作用。

至于(2),我不知道是否有办法解决这个问题。

最佳答案

我尝试了第一条路线(检查是否存在 plist 文件值),它适用于正在更新的人,但不适用于那些删除了应用程序然后下载并尝试使用更新的人。 (或者如果他们在任何时候删除应用程序并重新安装,他们将失去该功能)

幸运的是,我有一个使用“促销”代码激活功能的机制,所以当一些用户提示他们已经为以前的版本付费但在他们成为应用程序购买时不再具有某些功能时,我向他们发送了一个促销代码以响应该功能。不理想,因为我无法验证他们是否真的购买了它,但只有少数人甚至问过。

关于iphone - iOS StoreKit 旧版/升级支持的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312264/

相关文章:

Linux glibc 2.18 及更早版本 - 漏洞

delphi - 有什么好的论据可以说服管理层升级到 Delphi 2009/2010?

iphone - 升级xcode使用的sqlite3版本?

iphone - pdf 未添加到 IOS 5 中 Objective-C 中的电子邮件

ios - PresentShareDialog 返回 nil 的原因是什么?

iOS:RESTKit 与 CoreData 同步数据

ios - UIBezierPath 和渐变 iOS

ios - 在代码中混合 Storyboard和约束

ios - 如何支持带有蓝牙键盘的 UIWebView 上的箭头键?

ios - 带有自定义提示的 AVAudioSession requestRecordPermission?