在我的应用程序中,我希望用户在关闭当前应用程序时看到另一个应用程序。 有可能吗?我尝试编写代码并直接从方法中通过自定义 url 架构打开应用程序:
- (void)applicationWillResignActive:(UIApplication *)application
{
NSString * string = @"InnovationLab://";
NSURL * url = [NSURL URLWithString:string];
[[UIApplication sharedApplication] openURL:url];
}
但是没有用。我在这里放置了一个断点,一旦我关闭应用程序,它就会停在这里,但什么也没有发生。这不会转到 AppStore。仅供演示和内部使用。
最佳答案
你应该这样做吗?没有。
你能做这个吗? (可能)不是
我写了一个小测试应用程序来尝试打开一个我知道可以工作的 URL(一个可以打开 map 应用程序的 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
记录了一些东西。该应用程序为 canOpenURL:
返回 YES
,但在您尝试 -openURL:
时返回 NO
作为返回值。
这是日志:
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:
,它会找到并立即将您带到 map 应用程序。 applicationWillResignActive:
中可能会阻止该行为。如果您真的打算这样做(并且您的应用只有一个 View ),您可以使用 viewWillDisappear
。
关于ios - 如何在用户关闭当前应用程序时打开另一个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819329/