ios – NSUserDefaults initWithSuiteName在删除应用程序后仍然存在

我有一个问题,如果我使用[[NSUserDefaults alloc] initWithSuiteName:SUITE_NAME]]存储任何数据,即使删除应用程序后,数据仍然存在.这是应该发生的吗?

解决方法

这应该会发生.事实上,这是 initWithSuiteName的目的,可以在应用组中的所有应用之间共享数据.文件说:

Use this method in scenarios such as:

  • When developing an app suite,to share preferences or other data among
    the apps

  • When developing an app extension,to share preferences or other data
    between the extension and its containing app

没有办法删除这个应用程序,因为当一个应用被删除时,它不被通知.在Keychain中存储项目时,这是一个同样的问题 – 它们在应用程序的使用寿命之内.这可能是一个好的或坏的,取决于你的应用程序的需要.

一个解决方案是加密文件的相应部分内容,并将密钥存储在共享钥匙串中.对于像这样的一个随机的256位AES对称密钥是完美的.通常,只要用户在设备上具有密码,则文件系统被加密,共享存储中的项目应该被认为是干净的.

另一个选择是使用共享存储作为传递;我们在我们的应用程序套件中执行此操作.一个应用程序将加密文件放在共享存储中,然后使用文件URI和加密密钥在我们的套件中调用另一个应用程序.接收的应用程序将文件复制到本地存储器中,删除共享文件,然后解密本地文件.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...