[英]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(就像您已經做的那樣)。
我發現,有時似乎僅僅由於構建其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.