如何在iOS应用程序中访问通用链接?

时间:2018-12-06 15:55:13

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

我正在使用通用链接来打开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

}

我无法弄清楚确切的问题是什么。 enter image description here

3 个答案:

答案 0 :(得分:0)

这是一个古老的问题,但是对于任何寻找的人,这里缺少的组件是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.   
  3. 将Apple App网站关联文件添加到您的网站。请参阅添加Apple App Site Association文件。
  4.   
  5. 将applinks密钥添加到Apple App Site Association文件。指定每个应用程序将处理的网站部分。
  6.   

您已经完成了第1步(和第0步,即在应用程序中设置代码),但第2步和第3步丢失了。

答案 1 :(得分:0)

我希望这对将来面对此问题的人们有所帮助。我有一个同样的问题,我可以使用ios App打开到我的网站的链接,但无法登录。 后来我发现这是@转义[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
    }

答案 2 :(得分:-1)

对于深层链接,我希望它调用打开的url函数:

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

这对您不起作用吗?