SpringBoard 打开app

有个想法 就用SpringBoard 打开app,有没那个大神实现了 给个研究的思路!或者这个想法不靠谱!

1 个赞

记得看过几个帖子说唤醒App的,感觉你可以翻一下

可行,有对应的api

好的 我去找找

记得这个api叫什么吗

- [LSApplicationWorkspace openApplicationWithBundleID:]

2 个赞

谢谢 大佬

还有个方法 就是 SpringBoard 的 - (void)applicationOpenURL:(id)arg1;

这个方法用法和正向一样

[SpringBoard applicationOpenURL:[NSURL URLWithString:@“BundleID://”]];

亲测可行

备注 (我的是 IOS10.2)

提示不支持的URL:
尚未载入此URL,
BundleID://com.tencent.live4iphone

提示不行呢。
提示不支持的URL:
尚未载入此URL,
BundleID://com.tencent.live4iphone

我通过一下的方法可以解决,但是呢,感觉不是很好,如果能直接通过SpringBoard是最好的,但是SpringBoard调用的方法不行。

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
    
    BOOL isInstall = [workspace performSelector:@selector(applicationIsInstalled:) withObject:@"com.tencent.xin"];
    
    if (isInstall) {
        //通过bundle id。打开一个APP
        [workspace performSelector:@selector(openApplicationWithBundleID:) withObject:@"com.tencent.xin"];
    }else{
        NSLog(@"您还没安装");
    }

1 个赞


int launchApp(char* bundleID)
{
    return SBSLaunchApplicationWithIdentifier((__bridge CFStringRef)[[NSString alloc] initWithUTF8String:bundleID], NO);
}

[NSURL URLWithString:@“QQ://”] 你怎么不可以直接跟踪下方法 我说错了 抱歉

BundleID 是你要打开的app,BundleID是要替换的内容
具体你可以hook这个方法 跟踪下 就可以知道你要打开输入的值

NSError *error = nil;
[%c(SSSpringBoardUtility) launchApplicationWithIdentifier:@“com.ownbook.notes” options:nil error:&error];