无法在AppDelegate方法中读取Deeplink URL(Swift 4,iOS 13)

时间:2020-02-04 09:38:05

标签: ios swift deeplink

我正在尝试通过深度链接来打开其他应用程序/野生动物园中共享链接的链接,从而在应用程序中打开特定页面,URL打开了该应用程序,但无法在特定页面上使用该应用程序,即无法读取链接(自定义URL) 。这是我的自定义URL:-WOT:// tradeDetail 如果有人知道我要去哪里错了,请帮助

这是屏幕截图和代码

enter image description here

var window: UIWindow?
var scheme = "WOT"

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)

    GMSPlacesClient.provideAPIKey(WOT.googlePlaceAPIKey)

    if let url = launchOptions?[.url] as? URL {
        return handle(url: url)
    }
    return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    return handle(url: url)
}

func handle(url: URL) -> Bool {
    switch url.absoluteString {
    case "\(scheme)://tradeDetail" : do {
        let sb = UIStoryboard(name: "Main", bundle: .main)
        let detailView = sb.instantiateViewController(withIdentifier: "SearchedPlaceDetailVC") as? SearchedPlaceDetailVC
        window?.rootViewController = detailView
        window?.makeKeyAndVisible()
        }
    default: return false
    }
    return true
}

1 个答案:

答案 0 :(得分:0)

您需要调用以下函数来浏览特定页面

 func application(_ application: UIApplication, continue userActivity:
        NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

        let myUrl: String? = userActivity.webpageURL?.absoluteString

        if myUrl?.range(of: "tradeDetail") != nil {

            let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)

            let yourViewController = storyboard.instantiateViewController(withIdentifier: “YourViewController”) as? YourViewController

            self.window?.rootViewController = yourViewController
            self.window?.makeKeyAndVisible()

        }

        return true
    }