2013-03-27 55 views
2

我想從另一個應用程序(應用程序2)使用URL方案啓動一個應用程序(應用程序1)。是否有一種方法可以檢查啓動我的應用程序的應用程序名稱?示例App2啓動應用程序1(因此,我可以在啓動應用程序1時檢查應用程序2的名稱)還是可以獲取有關啓動App1的源的信息?iOS上的URL方案

在此先感謝

回答

6

已經從其他應用程序啓動的應用程序,你只需要在您的信息plist文件配置「支持的URL方案」。您可以通過appDelegate中的以下方法瞭解應用程序啓動的原因。

  • (BOOL)申請:(UIApplication的*)應用程序didFinishLaunchingWithOptions:(NSDictionary的*)launchOptions

此處啓動選項

字典指示應用程序的啓動原因(如果有的話) 。在用戶直接啓動應用程序的情況下,該字典的內容可能爲空。

可能的鍵是

的NSString * const的UIApplicationLaunchOptionsURLKey; NSString * const UIApplicationLaunchOptionsSourceApplicationKey; NSString * const UIApplicationLaunchOptionsRemoteNotificationKey; NSString * const UIApplicationLaunchOptionsAnnotationKey; NSString * const UIApplicationLaunchOptionsLocalNotificationKey; NSString * const UIApplicationLaunchOptionsLocationKey; NSString * const UIApplicationLaunchOptionsNewsstandDownloadsKey;

+0

感謝您的答覆。如果應用程序1直接啓動後發送到後臺,App2啓動了相同的應用程序1,則此代理程序根本不會被調用。此外,它會啓動它轉到的同一頁面不是第一個着陸頁。任何建議來解決這個問題。 – divya 2013-03-27 09:09:42

+0

@divya您可以在您的應用程序委託 - (BOOL)應用程序中實現以下方法:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;當你的應用程序在後臺並且有一個請求來打開這個應用程序時,這個被調用。 – Ravi 2013-03-28 11:27:09

0

由於URL方案取決於您,您可以在URL中傳遞任何您想要的信息。例如:

[[UIApplication sharedApplication] openURL:@"app1scheme://app_action?source=app2"]; 

這種方法比使用啓動選項鍵的唯一真正的優勢是它也可以和可能包含網站的特定信息,如果有人從網站鏈接啓動您的應用。