【问题标题】:How to access universal link in iOS application?如何访问 iOS 应用程序中的通用链接?
【发布时间】:2018-12-06 15:55:12
【问题描述】:

我正在使用通用链接来打开 iOS 应用程序,并且基于链接数据,我必须在我的 iOS 应用程序中打开 viewcontroller。

我正在使用 Xcode 10.0。并在 iOS 12.0 (iPhone 7 Plus) 上运行应用程序。

这是我的通用链接:https://en5vz.app.goo.gl/kjvaHzXrLMNBEDtG7

当我点击此链接时,应用程序会启动,但没有调用下面给出的方法:

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

    print("\(#function) ---- \(userActivity.webpageURL)")
    if #available(iOS 11.0, *) {
        print("\(#function) ---- \(userActivity.referrerURL)")
    } else {
        // Fallback on earlier versions
    }


    if let incominURL = userActivity.webpageURL{

        let linkHandled = DynamicLinks.dynamicLinks()?.handleUniversalLink(incominURL, completion: { (dynamiclink, error) in

            if let dynamiclink = dynamiclink, let _ = dynamiclink.url{

                self.handleIncomingDynamicLink(dynamiclink: dynamiclink)
            }

        })
        return linkHandled!

    }

    return false

}

我无法弄清楚确切的问题是什么。

【问题讨论】:

    标签: ios deep-linking xcode10 ios-universal-links


    【解决方案1】:

    这是一个老问题,但对于任何人来说,这里缺少的组件是 app-site-association 文件:https://developer.apple.com/documentation/uikit/core_app/allowing_apps_and_websites_to_link_to_your_content/enabling_universal_links

    按照以下步骤将您的应用和网站关联起来以获取通用链接:

    1. 将关联域权利添加到您的应用程序。使用 applinks 服务前缀包括您的应用将支持的所有域。请参阅添加关联域权利。
    2. 将 Apple App Site Association 文件添加到您的网站。请参阅添加 Apple 应用网站关联文件。
    3. 将 applinks 键添加到 Apple App Site Association 文件。指定每个应用将处理的网站部分。

    您已完成第 1 步(以及第 0 步,即在您的应用中设置代码),但缺少第 2 步和第 3 步。

    【讨论】:

      【解决方案2】:

      我希望这对那些将来面临这个问题的人有所帮助。我遇到了同样的问题,我可以使用 ios App 打开指向我的网站的链接,但无法登录。 后来我发现这是@escaping [Any]?导致它的部分。 我将代码改为:@escaping ([UIUserActivityRestoring]?) 并记录到 Xcode 控制台。

      func application(_ application: UIApplication, continue userActivity: 
      NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
              print("Continue User Activity called: ")
              if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
                  let url = userActivity.webpageURL!
                  print(url.absoluteString)
                  //handle url and open whatever page you want to open.
              }
      
              return true
          }
      

      【讨论】:

        【解决方案3】:

        对于深度链接,我希望它会调用 open url 函数:

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

        这不适合你吗?

        【讨论】:

        • 我喜欢这个网站,但让我大吃一惊的是,唯一一个回复的人,几乎可以肯定是正确的答案...投了反对票?
        猜你喜欢
        • 2021-12-29
        • 2018-10-23
        • 2017-07-26
        • 2018-05-01
        • 2017-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多