我发现在SpringBoard中创建的变量无法被其他常规应用程序访问。但现在我想制作一个标志变量,可以在全局环境中有效地共享状态。
我认为在某个路径创建的文件可以做到这一点,但这可能不够快。
有人知道如何做到这一点吗?
最佳答案
您可以尝试将文件与该文件中的更改通知组合起来。进程之间的通知可以通过两种方式发送:
- Darwin 通知中心
CFNotificationCenterGetDarwinNotifyCenter
- 分布式通知中心
CFNotificationCenterGetDistributedCenter
- 私有(private)API
分布式通知中心更好,因为您可以发送带有附加数据的通知。 Darwin 通知中心忽略传递给它的所有用户信息。因此,当您更改某些标志并将其保存在文件中时,您可以使用该标志的新值发送通知。您甚至不需要自己打开文件并获取标志的值。所有其他应用程序只需要监听此通知即可。
这是CFNotificationCenterGetDistributedCenter
原型(prototype)
CFNotificationCenterRef CFNotificationCenterGetDistributedCenter();
更新:
此功能在iOS 5.0及以上版本可用。如果您需要支持旧版本,有两种解决方案:
- Darwin 通知中心
- CFMessagePort - 可以传输任意数据。
如果您确实需要支持旧版本,我建议您使用 CFMessagePort。这是简单而灵活的解决方案,并且有详细记录。如果您遇到问题,您总可以找到可行的示例。
关于iphone - 如何在越狱的iPhone中创建一个可以被SpringBoard或其他应用程序访问的全局环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768901/