NSUserDefaults 会从 TestFlight 持续到最终的 App Store 版本吗?

Posted

技术标签:

【中文标题】NSUserDefaults 会从 TestFlight 持续到最终的 App Store 版本吗?【英文标题】:Will NSUserDefaults Persist from TestFlight to the Final App Store Version? 【发布时间】:2016-04-19 10:08:02 【问题描述】:

我使用 Xcode 在我的手机上安装了我的应用程序,当我从 TestFlight 安装它时,我收到一条警报,说该应用程序已经安装并询问我想要替换它,我说是的。

警报说应用程序的数据可能会丢失,但实际上它都在那里,包括保存到 nsuser 默认值的数据。

所以我的问题是,在 TestFlight 版本之上安装从应用商店下载的最终版本时会发生同样的情况吗?

我问这个是因为我的应用有应用内购买,而购买的作用是将 bool 设置为 true 并将其保存到 nsuserdefaults。我希望我的 beta 测试人员免费获得应用内购买,所以我想知道当他们获得最终版本时,该 bool 是否仍会设置为 true。

【问题讨论】:

这听起来不是一种非常可靠的 IAP 处理方式。 如果 App Store 中的应用与 TestFlight 中的应用具有相同的 Bundle ID,则 NSUserDefaults 不会被擦除(我假设当您从 App Store 下载应用时,TestFlight 中的应用是安装在您的 ios 设备上)。是的,在 NSUserDefaults 中处理 InApps 并不是一个好的解决方案。你可以看看 MKStoreKit 之类的东西来处理应用内。 好吧,如果这就是你们的意思,我并不担心盗版,但我会寻找替代方案。谢谢。 :) 谢谢你的回答,@dennis。如果您希望我接受,请将其发布为真实答案。 【参考方案1】:

如果 App Store 中的应用与 TestFlight 中的应用具有相同的 Bundle ID,则 NSUserDefaults 不会被删除(我假设当您从 App Store 下载应用时,TestFlight 中的应用已安装在您的iOS 设备)。

是的,在NSUserDefaults 中处理应用内应用并不是一个好的解决方案。您可以查看 MKStoreKit 之类的内容来处理应用内。

【讨论】:

【参考方案2】:

这似乎是一个典型的 XY 问题:您问的是一件事(用户默认),但您确实想解决另一个问题(应用内购买)。

当您进行应用内购买时,您的应用需要有一种恢复购买的方式,以便购买新 iOS 设备的任何人都可以下载他们购买的应用,并恢复所有购买。

在这种情况下,不会有用户默认设置,因为它是全新的手机或 iPad。

使用 TestFlight 的人应该知道,他们是 beta 测试人员,可能会发生各种不愉快的事情,包括崩溃、数据破坏、应用内购买丢失等等。

【讨论】:

嗯,我知道这一点,但我不想编写自己的 iap 恢复系统,而且苹果不提供 iap 的促销代码。我认为,作为“谢谢”的礼物,我的 beta 测试人员在 nsuserdefaults 持续时拥有完整版本就足够了。所以我真的只是想知道这是否会奏效,即使不是永远。

以上是关于NSUserDefaults 会从 TestFlight 持续到最终的 App Store 版本吗?的主要内容,如果未能解决你的问题,请参考以下文章

NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

NSUserDefaults 简介

将UIColor保存到NSUserDefaults并从NSUserDefaults加载

NSUserDefaults 不可靠?

何时(不)滥用 NSUserDefaults

首选项(NSUserDefaults)崩溃?