我正在为越狱的iOS编写一个守护进程,我想使用GUI为它设置某些设置。是否可以为守护进程设置GUI?如果没有,我如何编写可以与守护进程通信的应用程序,以便通过应用程序控制守护进程?
答案 0 :(得分:7)
是的,你可以这样做。我有多个应用程序,包含一个普通UIApplication
,然后是一个始终运行的后台启动守护程序。
这取决于您希望在两者之间传达什么样的信息。我使用的一种模式(还有许多其他方式)是拥有共享首选项文件。我可以将此文件存储在/var/mobile/Library/MyAppName/user_preferences.plist
中。启动守护程序将读取此文件,UI可以编写它。
当用户通过用户界面更改某些设置时,您的用户界面可以在writeToFile:atomically:
中使用NSDictionary
写出plist文件。然后它需要告诉守护进程是时候重新读取首选项文件了。您可以通过通知执行此操作。在UI应用程序中:
#import <notify.h>
notify_post("com.mycompany.settings_changed");
在您的守护程序中,您将注册一个回调方法或块,当发布com.mycompany.settings_changed
通知时,该方法将被iOS调用。
int status = notify_register_dispatch("com.mycompany.settings_changed",
¬ifyToken,
dispatch_get_main_queue(), ^(int t) {
NSLog(@"settings notification received");
[self loadSettings];
});
守护程序的loadSettings
方法随后可以使用dictionaryWithContentsOfFile:
读取plist文件。
如果我以后有更多时间,我会尝试添加更多描述(和代码)。