經(jīng)過連續(xù)的奮戰(zhàn)攀圈,終于把Demo走通了搓彻,期間踩了很多哭笑不過的坑,這里記錄下完域,希望能幫助后面的同學(xué)软吐。
Daemon應(yīng)用是可以隨機(jī)器一起啟動(dòng)且在后臺(tái)長(zhǎng)時(shí)間運(yùn)行的服務(wù)程序。Demo的創(chuàng)建主要參考iosre論壇中狗神的翻譯文章與原文吟税,這里表示十分感謝凹耙。
坑一:環(huán)境問題
本地的theos工程版本較老,創(chuàng)建時(shí)根本找不到tools模板肠仪。因?yàn)閷?duì)重裝theos環(huán)境可能導(dǎo)致的后續(xù)問題顧慮重重肖抱,花費(fèi)了大量的時(shí)間來嘗試在原有的環(huán)境上升級(jí)版本。事實(shí)證明异旧,這條路徑非常難走意述,本人最終放棄了。在不動(dòng)原有/opt/theos目錄泽艘,換個(gè)目錄重新clone了theos代碼欲险,配置相關(guān)路徑后镐依,新版本的theos可用了匹涮,且暫時(shí)末發(fā)現(xiàn)什么問題,希望后面也不會(huì)出現(xiàn)較嚴(yán)重的環(huán)境問題吧槐壳。
坑二:提權(quán)
在狗神的文章中提到然低,生成的deb文件的權(quán)限歸屬為當(dāng)前用戶而不是Daemon應(yīng)用要求的root用戶,將導(dǎo)致應(yīng)用運(yùn)行失敗务唐。解決辦法就是下載文中給出的fauxsu文件并放置到theos/bin目錄下雳攘,且需要通過chmod/chown命令將新文件提升權(quán)限,最終達(dá)到的下圖的效果:
然后通過make package命令生成的deb文件自然就會(huì)變成root:wheel狀態(tài)枫笛,如下圖吨灭。但在實(shí)際操作過程中,上圖的狀態(tài)很容易就做到了刑巧,但下圖卻沒有按照預(yù)想出現(xiàn)喧兄。最終我在文章的回復(fù)中找到了答案无畔,需要將mac機(jī)器中的System Integrity Protection功能關(guān)閉,這里同樣要感謝下LiserYu同學(xué)吠冤。
坑三:openURL
應(yīng)用設(shè)計(jì)上希望可以用Daemon在后臺(tái)打開一些指定的應(yīng)用程序浑彰。自然而然地想到使用UIApplication中的openURL來實(shí)現(xiàn)功能了。因此將Daemon的main.m改成常規(guī)應(yīng)用的代碼形式拯辙,編譯打包安裝到手機(jī)郭变,發(fā)現(xiàn)Daemon崩潰了。本人不是太確定Daemon是否可能有自己的UI界面涯保,反正openURL這條路暫時(shí)走不通了诉濒。想了很多辦法,都不能很簡(jiǎn)單的替代openURL遭赂。有心栽花花不開循诉,無心插柳柳成蔭,花費(fèi)了好大一番功夫撇他,無意中看到了一個(gè)帖子茄猫,使用system命令來打開指定的應(yīng)用,完美的解決了openURL的問題困肩。想必它也應(yīng)該是openURL底層使用的方法划纽。
結(jié)語
Daemon啟動(dòng)應(yīng)用的功能實(shí)現(xiàn)了,接下來就是幾個(gè)指定新聞應(yīng)用的界面輪詢效果的改進(jìn)了锌畸,期待能在下周給出漂亮的總結(jié)勇劣。