簡體   English   中英

自定義網址方案僅在應用程序在后台運行時有效嗎?

[英]Custom url scheme works only if the app is in the background?

我已經為我的iOS應用程序定義了自定義網址方案,以便可以從網站進行訪問。 當我在野生動物園中輸入自定義url方案時,該應用會打開,但不會調用我的AppDelegate中的以下函數:

 func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    print("Scheme: \(url.scheme)");
    print("Query: \(url.absoluteString)");
    return true;
}

僅當應用程序在后台打開並運行時才被調用。 我希望在Safari瀏覽器中輸入URL並且應用未打開時調用該函數。 任何幫助表示贊賞,謝謝!

在didFinishLaunchingWithOptions中,可以檢查launchOptions是否包含鍵UIApplicationLaunchOptionsURLKey。 如果您使用方案打開應用,則它將在該詞典中。

當應用程序在后台運行時,請使用openURL(就像您已經做的那樣)。

這聽起來好像自定義URL設置沒有正確設置。

您的.plist文件中肯定有這些設置嗎?

在此處輸入圖片說明

有了這些設置之后,無論何時啟動應用程序,都一定會調用application功能。

此處的更多信息:

自訂網址

斯威夫特4:

我發現,有時似乎僅僅由於構建其phisic基礎結構所需的時間而導致應用程序無法打開URL(特別是如果您使用自定義的視圖控制器或過渡)。 我找到了這個解決方案:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
         DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
             // your code
         }
         return true
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM