Если вы это сделать? Нет.
Можете ли вы это сделать? (Возможно) Не
Я написал небольшой тест приложение попробуйте открыть URL, который я знаю, чтобы работать (в URL-адрес компании Apple Maps, который откроет карты приложение). Я положил в некоторых лесозаготовительной код, чтобы увидеть, что происходит.
- (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
.
Использует ли тот же код и URL-адрес в вашем приложении, если вы его вызываете, например, нажатием кнопки или другим действием, пока ваше приложение все еще активно? – rmaddy
Да. Он работает из других точек. – Ashutosh
@Ashutosh Как тест, работает ли это, если переместить этот код в метод 'applicationDidEnterBackground'? – rmaddy