由於事件的順序略有不同,取決於這兩種情況正在進行中,我希望能夠區分這種差異。有什麼建議麼?如何判斷handleOpenURL是否被稱爲應用程序啓動或應用程序正在運行?
5
A
回答
9
您不應該使用handleOpenURL
,因爲它已被棄用。相反,使用application:openURL:sourceApplication:annotation:
(自iOS 4.2起可用)。
Apple's documentation給出了答案,在這裏你的問題就application:openURL:sourceApplication:annotation
:
如果您的應用程序,還需要發起打開URL,應用程序調用的 應用:willFinishLaunchingWithOptions:和 應用中:didFinishLaunchingWithOptions:方法一,其次是 這個方法。這些方法的返回值可用於防止調用此方法。 (如果應用程序已經在運行, 只有這個方法被調用。)
2
您是否在AppDelegate中試過這種方法?
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"Launched with URL: %@", url.absoluteString);
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_APP_OPENED_FROM_LINK object:[userDict objectAtIndex:0]];
return YES;
}
1
對我來說,我不得不再次創建導航流程,如果當應用程序在後臺運行的應用程序被啓動,但如果應用程序是第一次推出,沒有必要這樣做。我的實施是:
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.appIsLaunchedFromZeroToOpenURL = false;
//some other code
NSURL *applicationOpenURL = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
if (applicationOpenURL) {
self.appIsLaunchedFromZeroToOpenURL = true;
}
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if (self.appIsLaunchedFromZeroToOpenURL == false) {
//app should reload the navigation then navigate to url if the app is not launched for the first time
[self createNavigationFromZero];
}
[self openURL:url];//navigate to the url
self.appIsLaunchedFromZeroToOpenURL = false;
}
相關問題
- 1. 如何判斷全屏應用程序是否正在運行?
- 2. 應用程序如何判斷它是否在hackintosh上運行?
- 3. 如何判斷ID是否是Facebook應用程序或用戶
- 4. 如何判斷openoffice的哪個應用程序正在運行?
- 5. 如何判斷OrbBasic程序是否正在運行
- 6. 如何判斷我的Titanium應用程序是否在模擬器上運行?
- 7. 如何判斷我的應用程序是作爲32位還是64位應用程序運行的?
- 8. 如何判斷應用程序在C++中運行的位置
- 9. 如何判斷iPhone應用程序是否通過背景啓動
- 10. 如何判斷我的應用程序是否第一次運行?
- 11. 如何運行彈簧啓動應用程序作爲Web應用程序以及命令行應用程序?
- 12. 在iOS應用Revmob - 如何判斷用戶是否安裝了應用程序
- 13. 如何判斷iPhone應用程序是否由PhoneGap創建?
- 14. 如何判斷ClickOnce應用程序是否剛剛更新?
- 15. 如何判斷JS Windows8 metro應用程序是否可見
- 16. 如何判斷我的應用程序是否已暫停?
- 17. 如何在我啓動應用程序時關閉(或在後臺)其他正在運行的應用程序?
- 18. 在啓動時運行應用程序
- 19. 在啓動時運行應用程序
- 20. 如何判斷用戶是第一次運行還是更新應用程序
- 21. 應用程序啓動時應用程序類不運行?
- 22. 是否有可能在啓動時運行AIR應用程序?
- 23. python程序如何判斷它是否在emacs中運行?
- 24. 我的Perl程序如何判斷是否在mod_perl下運行?
- 25. 如何判斷一個應用程序是否正在播放聲音
- 26. 如何判斷一個人在使用移動應用程序
- 27. FIREMONKEY - 運行啓動程序啓動應用程序(OSX)
- 28. Android應用程序名稱被截斷
- 29. 如何判斷文件是否被其他應用程序打開?
- 30. 如何判斷ASP.Net應用程序中的viewstate是否被篡改?