應該怎麼辦呢?
號 你能做到這一點?(可能)不
我寫了一個小的測試應用嘗試打開我知道工作(蘋果地圖網址將打開地圖應用程序)的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
。
如果您在應用程序仍處於活動狀態時通過按下按鈕或執行其他操作來調用相同的代碼和URL,是否可以在您的應用程序中工作? – rmaddy 2013-02-11 19:29:42
是的。它從其他方面起作用。 – Ashutosh 2013-02-11 19:31:43
@Ashutosh就像一個測試,如果將此代碼移動到'applicationDidEnterBackground'方法,它是否工作? – rmaddy 2013-02-11 19:51:00