あなたはこれをすべきですか?いいえ
、できますか?(おそらく)そうではない
動作することがわかっている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:
ます。これを実行する準備ができている場合(およびビューが1つしかないアプリがある場合)は、を使用できますviewWillDisappear
。