2011-05-04 83 views
4

我在博物館展覽中使用了一些iPad,運行由其他人開發的應用程序。儘管我們已經介紹了主頁按鈕,但我偶然發現應用程序崩潰,將用戶留在主屏幕上。從這裏他們可以訪問其他未經授權的應用在IOS上使用launchd重新啓動應用程序

博物館並不反對越獄iPad,如果這會給我們提供我們需要的解決方案,所以我一直在研究如何使用launchd和KeepAlive標記並將.plist文件放入/ Library/LaunchAgents目錄,以防止應用程序關閉或重新產卵它,如果它崩潰

到目前爲止,我已經成功地使它與iPad和Cydia安裝的應用程序隨附的默認應用程序一起工作,但我無法得到它重新啓動我們想要的應用程序。我已經從/ User/Applications目錄和/ Applications中嘗試過了,有人建議可能會有所作爲,但並不令人高興。有人可以提出一個可能的解決方案,還是我在浪費時間?我從下面的plist文件插入了XML。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.MVFieldguide.launchd</string> 
<key>ProgramArguments</key> 
    <array> 
    <string>/Applications/Field Guide 2010.app/Field Guide 2010</string> 
    </array> 

<key>RunAtLoad</key> 
    <true/> 

<key>KeepAlive</key> 
    <dict> 
     <key>SuccessfulExit</key> 
     <true/> 
    </dict> 

回答

2

這不會起作用,因爲App Store的應用程序不會保存在應用程序文件夾。我可以考慮兩種選擇。

  1. 在Cydia中安裝AppLinks。這將創建每個App Store應用程序的符號鏈接,並將它們放在/ var/mobile/AppLinks中。然後在你的plist文件把應用程序路徑爲

    /var/mobile/AppLinks/Field Guide 2010/Field Guide 2010

  2. ,而不是安裝應用程序放到iPad常規的,你可以從Xcode中IPA和提取的.app捆綁。然後手動將其安裝到/ Applications /中,您就可以按照您的方式使用launchd plist。

我推薦第一個選項,因爲它會允許您更新應用程序,而無需將.app軟件包手動放入應用程序文件夾。使用第一個選項根本不會改變您的工作流程來更新應用程序。

另外,請注意,如果您這樣做,您必須在更新應用程序退出之前刪除plist,因爲我認爲您可以在應用程序運行時更新它。

0

的iOS 6.0可能有某種修復了設備鎖到這種模式......我DON「T KNOW(NDA)

被攻擊的的iOS 5.1還是可以做到以下幾點:

用戶應用同捆標識....

你可以用com.apple.calculator打開計算器....不需要的文件夾!

這裏是你投入的launchd文件夾中的腳本...

先從cydia安裝Open應用程序,以便您可以使用「open com.apple.calculator」終端命令

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Disabled</key> 
    <false/> 
    <key>Label</key> 
    <string>com.perceptdev.tink</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>open</string> 
     <string>com.orbitusrobotics.thegatekeeper</string> 
     <string></string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>StartInterval</key> 
    <integer>10</integer> 
    <key>WatchPaths</key> 
    <array/> 
</dict> 
</plist>