2011-08-29 111 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。 –