你应该这样做吗?不
,你能做到吗?(可能不是
我编写了一个小测试应用程序来尝试打开一个我知道可以工作的 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
for 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
如果您想允许您的用户打开另一个应用程序,您应该为他们提供一个按钮(或操作表或警报)。重新使用 Home 按钮听起来可能会让您的应用程序被拒绝。
请注意,如果您将相同的代码放入application:didFinishLaunchingWithOptions:
,它会起作用 find 并立即将您带到地图应用程序。该行为可能在applicationWillResignActive:
. 如果您真的打算这样做(并且您有一个只有一个视图的应用程序),您可以使用viewWillDisappear
.