【问题标题】:how to open an app by bundle id on iOS如何在 iOS 上通过 bundle id 打开应用
【发布时间】:2015-05-27 08:25:20
【问题描述】:

刚才,我在 Xcode6.3.1 上创建了一个基于 Single View Application 的项目,然后我在 Main.storyboard 上创建了一个按钮。按键触摸时的代码是这样的:

NSString * bundleId = @"com.apple.iBooks";
void* sbServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY);
int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");
const char *strBundleId = [bundleId cStringUsingEncoding:NSUTF8StringEncoding];
int result = SBSLaunchApplicationWithIdentifier((__bridge CFStringRef)bundleId, NO);
dlclose(sbServices);

但它没有工作。 然后我喜欢这个网站告诉我,Launch other application without URL schema in iphone? 它也没有工作。请帮我。 我的设备是 iPhone4s,iOS 7.1.2,越狱了。

【问题讨论】:

标签: ios jailbreak


【解决方案1】:

* 对于越狱,您可以继续执行此操作 *

有一种称为URL scheme 的机制,可用于从应用程序内部打开应用程序。但为此,您需要在 plist 文件中执行正确的 url 方案设置。我强烈认为您没有考虑此选项。

* 还有另一种方式是绝对不推荐的(越狱电话除外),API 是私有的 *,但您可以在开发模式下尝试并享受。

  • openApplicationWithBundleID :使用捆绑标识符打开应用程序。
  • - (NSArray*)allInstalledApplications; :这将列出您设备上所有已安装的应用程序。

如果您想看一个有趣的演示,请在您的手机中 run this app 并查看 Apple Watch 样式、弹簧板,列出所有应用程序 &可以点击启动。

希望能更好地了解私有 api 的使用情况。

【讨论】:

  • 越狱没有限制。 :)
  • @Balram Tiwari - 感谢您的澄清。演示效果很好。我解决了这个问题。在 demo 中,它给出了私有 api 使用的概念。
【解决方案2】:

从 Cydia 安装 com.conradkramer.open open 包,您可以通过 SSH 从 shell 或从应用程序运行 open com.bundle.id

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2016-01-09
    • 2016-01-31
    • 2013-02-09
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多