使用包标识符打开应用程序

发布于 2024-12-01 19:23:05 字数 380 浏览 5 评论 0原文

是否可以使用捆绑包标识符从我们的应用程序中打开应用程序。假设我在一台设备上安装了两个应用,分别是 com.test.app1com.test.app2。我可以从我的 app2 中打开 app1 吗?

我知道 openUrl 方法。为此,我必须在 info.plist 中注册 url 方案。然后我可以使用以下方法:

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

但是如果我没有注册 url 方案或者不知道注册的 url 怎么办?

有什么想法吗..?

Is it possible to open a application from our application with bundle identifier. Suppose I have two apps installed on device one with com.test.app1 and com.test.app2. Can I open app1 from my app2.

I know about openUrl method. for that I have to register url scheme in info.plist. and then i can use following method:

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

But what if I didn't register url scheme or don't know the registered url.

Any idea..?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

追星践月 2024-12-08 19:23:05

您可以使用私有 API 来做到这一点

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

You can use private API to do that

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject * workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
BOOL isopen = [workspace performSelector:@selector(openApplicationWithBundleID:) withObject:@"com.apple.mobilesafari"];
万劫不复 2024-12-08 19:23:05

@EvanJIANG 答案的 Swift 版本。

guard let obj = objc_getClass("LSApplicationWorkspace") as? NSObject else { return false }
let workspace = obj.perform(Selector(("defaultWorkspace")))?.takeUnretainedValue() as? NSObject
let open = workspace?.perform(Selector(("openApplicationWithBundleID:")), with: "com.apple.mobilesafari") != nil
return open

The Swift version of @EvanJIANG answer.

guard let obj = objc_getClass("LSApplicationWorkspace") as? NSObject else { return false }
let workspace = obj.perform(Selector(("defaultWorkspace")))?.takeUnretainedValue() as? NSObject
let open = workspace?.perform(Selector(("openApplicationWithBundleID:")), with: "com.apple.mobilesafari") != nil
return open
庆幸我还是我 2024-12-08 19:23:05

我认为这是不可能的。

I don't think that's possible.

孤芳又自赏 2024-12-08 19:23:05

您可以使用 openUrl 调用,但为了成功,您必须向项目的 xy-Info.plist 文件添加一些值。

在此处输入图像描述

完成后,您可以调用:

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

You can use the openUrl call, but in order to succeed you must add some values to your project's xy-Info.plist file.

enter image description here

Once you've done that you can then call:

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

红衣飘飘貌似仙 2024-12-08 19:23:05

答:仅使用Bundle 标识符无法直接打开应用程序。

解决方案:您可以实现深度链接(并将您的捆绑ID作为深度链接ID)概念来执行此操作:深度链接

Answer: You can't open app directly only with Bundle identifier.

Solution: You can implement deep linking (and take your bundle id as your deep linking id)concept to do this: Deep-linking

庆幸我还是我 2024-12-08 19:23:05

可以使用 URL 方案。

It is possible using URL Schemes .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文