在我的应用程序中,我希望用户在关闭当前应用程序时看到另一个应用程序。 有可能吗?我尝试编写代码并通过自定义网址架构打开应用程序:
- (void)applicationWillResignActive:(UIApplication *)application
{
NSString * string = @"InnovationLab://";
NSURL * url = [NSURL URLWithString:string];
[[UIApplication sharedApplication] openURL:url];
}
但它没有用。我在这里放了一个断点,一旦我关闭应用程序就停在这里,但没有任何反应。这不会去AppStore。仅用于演示和内部使用。
答案 0 :(得分:4)
你应该这样做吗?第
你能做这个吗? (可能)不是
我写了一个小测试应用程序,试图打开一个我知道可以工作的URL(Apple Maps URL将打开地图应用程序)。我输入了一些日志代码来查看发生了什么。
- (void)applicationWillResignActive:(UIApplication *)application
{
NSURL *url = [NSURL URLWithString:@"http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
NSLog(@"Can Open URL");
} else {
NSLog(@"Cannot Open URL");
}
BOOL success = [[UIApplication sharedApplication] openURL:url];
NSLog(@"Success is %@", [NSNumber numberWithBool:success]);
NSLog(@"Shared app: %@", [UIApplication sharedApplication]);
NSLog(@"applicationWillResignActive");
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSURL *url = [NSURL URLWithString:@"http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino"];
[[UIApplication sharedApplication] openURL:url];
NSLog(@"Shared app: %@", [UIApplication sharedApplication]);
NSLog(@"Entered Background");
}
所有NSLogs
都记录了一些内容。该应用为YES
返回canOpenURL:
,但在您尝试NO
时返回-openURL:
作为返回值。
这是日志:
Flipper[18946:907] Can Open URL
Flipper[18946:907] Success is 0
Flipper[18946:907] Shared app: <UIApplication: 0x1f0413f0>
Flipper[18946:907] applicationWillResignActive
Flipper[18946:907] Shared app: <UIApplication: 0x1f0413f0>
Flipper[18946:907] Entered Background
如果您想允许用户打开另一个应用,您应该为他们提供一个按钮(或操作表或警报)。重新设置主页按钮听起来可能会让您的应用被拒绝。
请注意,如果您将相同的代码放入application:didFinishLaunchingWithOptions:
,它就可以找到并立即让您碰到地图应用。 applicationWillResignActive:
中可能会阻止此行为。如果您真的开始这样做(并且您的应用程序只有一个视图),您可以使用viewWillDisappear
。
答案 1 :(得分:3)
您可以使用他们的网址方案和您提供的代码自由打开任何其他应用 - 只需确保它不违反HIG(Human Interface Guidelines)。但是在你的情况下它不会起作用。
This question并且答案提供了有关此问题的更多详细信息,但如果您在越狱手机上运行该应用程序,则可以使用此小代码:
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO];
或来自this answer的此片段:
system("/usr/bin/open com.mycompany.MyAppName");
那说,坏主意。 Apple将以99%的确定性拒绝您的应用。 (不适用,因为该应用程序不会上传到App Store。applicationWillResignActive
- 方法用于保存您的工作并准备关闭,您不能也不能在该方法中打开另一个应用程序。