经过连续的奋战,终于把Demo走通了,期间踩了很多哭笑不过的坑,这里记录下,希望能帮助后面的同学。
Daemon应用是可以随机器一起启动且在后台长时间运行的服务程序。Demo的创建主要参考iosre论坛中狗神的翻译文章与原文,这里表示十分感谢。
坑一:环境问题
本地的theos工程版本较老,创建时根本找不到tools模板。因为对重装theos环境可能导致的后续问题顾虑重重,花费了大量的时间来尝试在原有的环境上升级版本。事实证明,这条路径非常难走,本人最终放弃了。在不动原有/opt/theos目录,换个目录重新clone了theos代码,配置相关路径后,新版本的theos可用了,且暂时末发现什么问题,希望后面也不会出现较严重的环境问题吧。
坑二:提权
在狗神的文章中提到,生成的deb文件的权限归属为当前用户而不是Daemon应用要求的root用户,将导致应用运行失败。解决办法就是下载文中给出的fauxsu文件并放置到theos/bin目录下,且需要通过chmod/chown命令将新文件提升权限,最终达到的下图的效果:
然后通过make package命令生成的deb文件自然就会变成root:wheel状态,如下图。但在实际操作过程中,上图的状态很容易就做到了,但下图却没有按照预想出现。最终我在文章的回复中找到了答案,需要将mac机器中的System Integrity Protection功能关闭,这里同样要感谢下LiserYu同学。
坑三:openURL
应用设计上希望可以用Daemon在后台打开一些指定的应用程序。自然而然地想到使用UIApplication中的openURL来实现功能了。因此将Daemon的main.m改成常规应用的代码形式,编译打包安装到手机,发现Daemon崩溃了。本人不是太确定Daemon是否可能有自己的UI界面,反正openURL这条路暂时走不通了。想了很多办法,都不能很简单的替代openURL。有心栽花花不开,无心插柳柳成荫,花费了好大一番功夫,无意中看到了一个帖子,使用system命令来打开指定的应用,完美的解决了openURL的问题。想必它也应该是openURL底层使用的方法。
结语
Daemon启动应用的功能实现了,接下来就是几个指定新闻应用的界面轮询效果的改进了,期待能在下周给出漂亮的总结。