【问题标题】:How to use another app's settings如何使用其他应用程序的设置
【发布时间】:2009-12-11 07:44:34
【问题描述】:

我可以在 iPhone 应用程序中使用什么代码来获取和设置我编写的另一个应用程序的设置? (最好使用 NSUserDefaults)

【问题讨论】:

标签: iphone settings nsuserdefaults


【解决方案1】:

您无法使用 NSUserDefaults 完成此操作。

钥匙串虽然在 C 方面有些麻烦,并且比 NSUserDefaults API 受限得多,但可能允许您完成此操作。如果您可以将需要在应用之间共享的任何内容序列化为几个字符串,那么可能值得一试。

来自iPhone OS 3.x Release Notes

您现在可以在您创建的多个应用程序之间共享钥匙串项目。共享项目使同一套件中的应用程序更容易更顺畅地进行互操作。例如,您可以使用此功能共享用户密码或其他可能需要您分别从每个应用程序提示用户的元素。

共享钥匙串项目涉及在您的应用程序二进制文件中设置适当的权利。使用 Xcode,您必须创建一个包含应用程序支持的权利的权利属性列表文件。 iPhone 开发指南中描述了创建此文件的过程。有关您可以配置的权利的信息,请参阅 Keychain Services Reference 中对 SecItemAdd 函数的描述。

在运行时访问共享项目涉及将钥匙串服务编程接口与您在开发期间设置的访问组一起使用。有关如何访问钥匙串的信息,请参阅钥匙串服务编程指南。

这里是Buzz Anderson's Simple iPhone Keychain Code。您可以使用它将键/值对存储为钥匙串中的字符串。这并不多,但也许总比没有好。请参阅Apple's Keychain Programming Guide 了解更多信息。

【讨论】:

    【解决方案2】:

    您根本无法做到这一点。每个应用程序都安装在自己的文件夹中,并被赋予自己的唯一用户 ID。包含这些设置的文件位于其他应用程序的文件夹中,并且其权限设置为其他应用程序的权限。访问数据的唯一方法是使用与其他应用程序相同的应用程序标识符,在这种情况下,安装您的应用程序会覆盖旧应用程序。

    编辑:
    当问题要求使用 NSUserDefaults 执行此操作时,特别给出了此解决方案。对于更新的问题,提供的钥匙串方式或服务器方式都是合理的。

    【讨论】:

      【解决方案3】:

      您可以让一个应用程序将数据发送到您的服务器,然后另一个应用程序可以从您的服务器获取数据。

      你不能使用 NSUserDefaults 做到这一点,但它可以做到。

      【讨论】:

        【解决方案4】:

        您可以使用共享剪贴板。它不安全,但两个应用程序都可以从同一个剪贴板读取和写入。您只需要创建一个特定于应用程序的 UIPasteboard。查看 Apple 开发者网站上的 UIPasteboard 类参考以了解更多信息。

        --麦克

        【讨论】:

          【解决方案5】:

          您绝对应该按照建议查看 UIPasteboard——您可以创建一个新的粘贴板供您正在创建的应用程序使用(尽管没有什么可以阻止其他应用程序使用它们,但人们不太可能这样做)。 UIPasteboard 通过电源循环/重新启动是持久的 - 它会一直存在,直到创建的应用程序被删除。

          您还可以查看 SwapKit 库(看起来很酷):

          http://infinite-labs.net/swapkit/

          【讨论】:

          • 更准确地说:您可以通过 SwapKit 发布所有其他 SwapKit 应用程序都可以看到的“清单”(应用程序注册)。这通常是一个包含类型到应用程序绑定之类的静态字典,但您可以添加自定义键,使其不以“ILApp”开头。 (使用 [ILSwapService registerWithAttributes:(dict) update:YES] 以编程方式更改)。 ~ SwapKit 作者。
          • …(和 [ILSwapService registrationForApplicationWithIdentifier:] 阅读。API 文档:infinite-labs.net/swapkit/docs/api/…
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多