2011-08-29 27 views
5

是否可以通過我們的應用程序以bundle identifier打開應用程序。假設我在設備上安裝了兩個應用程序,其中com.test.app1com.test.app2。我可以從我的app2中打開app1嗎?使用捆綁標識打開應用程序

我知道openUrl方法。爲此,我必須在info.plist中註冊url方案。然後我可以使用以下方法:

[[UIApplication sharedApplication] openUrl:[NSURL urlWithString:@"myApp1://"]]; 

但是,如果我沒有註冊url方案或不知道註冊的url。

任何想法..?

回答

3

我不認爲這是可能的。

+0

你確定這是不是可能..?因爲我們可以檢查應用程序是否安裝在設備中或沒有安裝包標識符。所以我想知道可能有一些方法可以打開它。 –

+0

我不認爲蘋果認可的方式存在。 – Akshay

+0

@Akshay是正確的,這是不可能的。 –

0

可以使用URL Schemes。

+0

我知道這是可能的網址計劃,但我想知道這是可能的使用包標識符? ?如果我沒有url方案註冊比這可能打開一個應用程序。 –

2

您可以使用openUrl調用,但爲了成功,您必須將一些值添加到項目的xy-Info.plist文件中。

enter image description here

一旦你這樣做,你可以調用:

[[UIApplication sharedApplication] openUrl:[NSURL urlWithString:@"xingipad://"]];

5

您可以使用私有API做

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); 
NSObject * workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; 
BOOL isopen = [workspace performSelector:@selector(openApplicationWithBundleID:) withObject:@"com.apple.mobilesafari"]; 
+0

非常感謝!適用於iOS 11,不需要知道URL方案。 – DmitryKanunnikoff

+0

除非你不應該使用私人API。 – ekscrypto

+0

@ekscrypto但我認爲這是符合要求的唯一方法。順便說一句,我們成功地將此代碼上傳到AppStore。 –