3

他のアプリケーションが URL スキーマを介してアプリケーションから呼び出すことができることを知っています。ただし、すべてのアプリケーションがスキーマ URL に登録されているわけではありません。では、どうすればそのアプリケーションを起動できますか? 私はiphone jaibroken用に開発しています。

4

4 に答える 4

6

バンドルIDを使用してアプリを起動する方法はいくつかあります。

SBApplication

SBApplication *app = [[objc_getClass("SBApplicationController") sharedInstance] applicationWithDisplayIdentifier:@"com.wrightscs.someapp"];
[[objc_getClass("SBUIController") sharedInstance] activateApplicationFromSwitcher: app];

SBApplicationController

SBUIController *uicontroller = (SBUIController *)[%c(SBUIController) sharedInstance];
SBApplicationController *appcontroller = (SBApplicationController *)[%c(SBApplicationController) sharedInstance];

if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)])
{
    [uicontroller activateApplicationFromSwitcher:[[appcontroller applicationsWithBundleIdentifier:bundleID] objectAtIndex:0]];
}
else
{
    // doesn't work outside of Springboard
    [uicontroller activateApplicationAnimated:[[appcontroller applicationsWithBundleIdentifier:bundleID] objectAtIndex:0]];
}

4.xで使用した別の方法がありましたがSBUIController、5.0で機能しなくなったため、投稿しません。

于 2012-07-27T18:47:03.890 に答える
2

私はこのように使用しました:

void* sbServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY);
int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");
int result = SBSLaunchApplicationWithIdentifier((CFStringRef)bundleId, false);
dlclose(sbServices);

また、アプリに権限を付与する必要があります。

 <key>com.apple.springboard.launchapplications</key>
 <true/>

iOS 6で実行できます。

于 2013-03-27T03:30:12.270 に答える
2

私が知っているように、プライベート API だけがこれを行うことができます。初め

@interface PrivateApi_LSApplicationWorkspace
- (bool)openApplicationWithBundleID:(id)arg1;
@end

それからそれを使用してください

PrivateApi_LSApplicationWorkspace* _workspace;
_workspace = [NSClassFromString(@"LSApplicationWorkspace") new];
[_workspace openApplicationWithBundleID:bundleIdentifier];

https://github.com/wujianguo/iOSAppsInfoを確認できます。

于 2015-11-16T02:48:08.073 に答える