後叫了幾秒鐘我在我的應用程序一個深層鏈接功能,其工作一例旁邊的罰款。 根據打開應用程序的url,我有3個不同的入門頁面。 因此,當應用程序啓動時,我需要知道什麼鏈接(如果有)打開應用程序,然後提出正確的入職頁面。問題是,我需要知道的方法來呈現什麼屏幕:應用的OpenURL被didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
但如果深層鏈接在
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
這被稱爲5秒做後打開應用程序,我只能知道調用didFinishLaunchingWithOptions
(我算秒)。所以我有5秒鐘,我看到一個錯誤的入門頁面,直到openURL
被稱爲(如果它會被稱爲)。
所以我的問題是:有沒有辦法知道,如果應用程序是從之前或期間didFinishLaunchingWithOptions
一個URL啓動?
順便說一句launchOptions
在didFinishLaunchingWithOptions
是零,當應用程序從一個深層鏈接
當我打開我的應用程序從一個深層鏈接「launchOptio ns'在didFinishLaunchingWithOptions中爲零,但'openURL'確實被觸發(使用深層鏈接url)。我展示我的入職頁面內「didFinishLaunchingWithOptions」,在那裏你覺得我應該給第一個關鍵窗口時,應用程序啓動 –
好讓我問了幾個其他問題:你是從Web瀏覽器打開你的應用程序?您定位的是哪個最低iOS版本? 注意的application:didFinishLaunchingWithOptions:只有每次運行時調用一次。如果你的應用程序已經在後臺,應用程序:openURL:options:將被調用。 我關於窗口設置註釋只有當你依靠一個故事板作爲「主界面」設置適用。如果你是從application:didFinishLaunchingWithOptions中自己設置界面的話:你會沒事的,請忽略評論。 – Olivier
我提高了我的答案清晰 - 它已經和Xcode 8.3上運行iOS 9.3.4和iOS設備10.3經測試,對於Objective-C和斯威夫特的基礎之上。確保您在Info.plist的「URL Types'>'URL Schemes」(例如「my-app」)中設置了值,然後在您的設備上構建應用程序然後將其殺死,然後嘗試打開例如「my-app://」在任何網頁瀏覽器中。 – Olivier