2

我发现在 SpringBoard 中创建的变量不能被其他常规应用程序访问。但是现在我想制作一个可以在全局环境中有效共享状态的标志变量。

我认为在某个路径创建的文件可以做到这一点,但这可能不够快。

有人知道怎么做这个吗?

4

2 回答 2

4

您可以尝试将文件与此文件中的更改通知组合。进程之间的通知可以通过两种方式发送:

  1. 达尔文通知中心CFNotificationCenterGetDarwinNotifyCenter
  2. 分布式通知中心CFNotificationCenterGetDistributedCenter-私有API

分布式通知中心更好,因为您可以发送带有一些附加数据的通知。达尔文通知中心忽略所有传递给它的用户信息。因此,当您更改某些标志并将其保存在文件中时,您可以使用该标志的新值发送通知。您甚至不需要自己打开文件并获取标志的值。所有其他应用程序只需要监听此通知。

这是CFNotificationCenterGetDistributedCenter原型

CFNotificationCenterRef CFNotificationCenterGetDistributedCenter();

更新:

此功能在 iOS 5.0 及更高版本中可用。如果您需要支持旧版本,有两种解决方案:

  1. 达尔文通知中心
  2. CFMessagePort - 可以传输任意数据。

如果你真的需要支持旧版本,我建议你使用 CFMessagePort。这是一个简单而灵活的解决方案,有据可查。如果您遇到问题,您总能找到工作示例。

于 2013-07-21T13:16:27.483 回答
0

您可以将您的 var 存储在 keyChain 中,并将所有想要共享它的应用程序放在一个访问组中。希望它有所帮助。

于 2013-07-21T04:38:45.883 回答