2012-04-18 69 views
9

我曾問過一個問題here,但答案指導我開啓一個新主題。不久,我想從我的應用程序上啓動Appstore上的免費應用程序,但我想要啓動的應用程序沒有URL Scheme。關於我的另一個問題的評論說,使用一些特殊的APIs,如SBSLaunchApplicationWithIdentifier或者像UIDocumentInteractionController這樣的類可以實現。任何人都可以請幫助我如何從我的appication啓動應用程序。在此先感謝從我的應用程序中啓動應用程序的特殊API

回答

15

讓我先說,這種方法是越獄!它使用私有的API,Apple可以在未來的版本中隨時停止支持的

讓我們開始吧,這種方法使用[UIApplication launchApplicationWithIdentifier:suspended:]私有方法:

[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO]; 

從我所測試的應用程序沒有作爲root運行是沒用的,顯然跳板調用此方法(或LaunchServices )只允許根應用程序使用此方法啓動其他應用程序。

所以,首先你需要越獄你的iPhone,然後你需要讓你的應用程序以root身份運行。

要讓您的應用程序以超級用戶身份運行,您需要將其置於/Applications/YourApp.app而不是通常的/ User/Applications/UUID /YourApp.app。

您可以使用Cydia安裝OpenSSH並使用SSH訪問手機的外殼。

然後,將具有在正確的地方您的應用程序後,您需要設置權限,例如:

enter image description here

我會用同樣的那些爲蘋果蠹:

chown -R root:wheel /Applications/YourApp.app 

接下來,一個小技巧。二進制將需要setuid bit

chmod 4755 /Applications/YourApp.app/YourApp 

而對於最後一步,跳板不打開的應用程序與setuid位,但它會打開一個腳本(可以打開另一個應用程序)!只需更改二進制的名稱類似YourApp_:

mv /Applications/YourApp.app/YourApp /Applications/YourApp.app/YourApp_ 

並創建一個名爲YourApp在您的應用程序文件夾下面的腳本的新文件:

#!/bin/bash 
CrrDir=$(dirname "$0") 
exec "${CrrDir}"/YourApp_ 

現在,只需respring(有一個應用程序對於Cydia),你準備好了。

對不起,如果這看起來很難,它不是,我不記得我在哪裏瞭解它,但很久以前。這種方法在所有iOS版本中都能正常工作,並且我剛剛在iOS 5.1中進行了測試。

再次,如果您使用這個,您的應用程序將不會被Apple批准。

+0

在此先感謝。我讀過它,現在我將研究它。不管它是否很難:) – ilhnctn 2012-04-18 14:25:57

+0

Np,我希望這個答案可以幫助更多的人,我在SO中多次看到過這個問題。 – fbernardo 2012-04-18 14:26:51

+0

第二個問題,我是否必須越獄我的設備才能做到這些(比如使用Cydia安裝OpenSSH並使用SSH訪問您手機的外殼) – ilhnctn 2012-04-18 14:39:05

相關問題