1

我正在为越狱的 iOS 编写一个守护进程,我想使用 GUI 为其设置某些设置。是否可以为守护程序提供 GUI?如果没有,我如何编写一个可以与守护进程通信的应用程序,以便我可以通过应用程序控制守护进程?

4

1 回答 1

7

是的,你可以这样做。我有多个应用程序,其中包含一个 normal UIApplication,然后是一个一直运行的后台Launch Daemon

这取决于你想在两者之间交流什么样的信息。我使用的一种模式(也有许多其他方法)是拥有一个共享的首选项文件。我可能会将这个文件存储在/var/mobile/Library/MyAppName/user_preferences.plist. 启动守护进程会读取这个文件,而 UI 可以写入它。

writeToFile:atomically:当用户通过 UI 更改某些设置时,您的 UI 可以用in写出 plist 文件NSDictionary。然后它需要告诉守护程序是时候重新读取首选项文件了。您可以通过通知来做到这一点。在 UI 应用程序中:

#import <notify.h>

notify_post("com.mycompany.settings_changed");

com.mycompany.settings_changed然后,在您的守护程序中,您将注册一个回调方法或块,当通知发布 时将由 iOS 调用。

int status = notify_register_dispatch("com.mycompany.settings_changed",
                                      &notifyToken,
                                      dispatch_get_main_queue(), ^(int t) {
                                          NSLog(@"settings notification received");
                                          [self loadSettings];
                                      });

然后,守护程序的loadSettings方法可以使用dictionaryWithContentsOfFile:.

如果以后有更多时间,我会尝试添加更多描述(和代码)。

于 2012-11-25T00:51:52.740 回答