如何在 iOS 上通过捆绑 ID 打开应用

how to open an app by bundle id on iOS

刚才,我在 Xcode6.3.1 上创建了一个基于单视图应用程序的项目,然后我在 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,iOS7.1.2,越狱

*越狱可以继续这个*

有一种称为 URL scheme 的机制,可用于从您的应用程序内部打开应用程序。但为此你需要在你的 plist 文件中做正确的 url schemens setUp。我强烈觉得你没有在看这个选项。

* 还有另一种严格不推荐的方法(JAILBREAK PHONES 除外)API 是私有的 *,但您可以在开发模式下尝试并享受。

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

如果您想看到一个有趣的演示,请在您的 phone 中 run this app 并查看 Apple Watch 风格,spring 看板,列出了所有应用程序并且可以点击启动。

希望能更好地了解私有 api 用法。

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