我正在使用通用链接来打开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
}
答案 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
采取以下步骤将您的应用和网站相关联以获取通用链接:
- 将关联的域权利添加到您的应用程序。使用applinks服务前缀包括您的应用程序将支持的所有域。请参阅添加关联的域权利。
- 将Apple App网站关联文件添加到您的网站。请参阅添加Apple App Site Association文件。
- 将applinks密钥添加到Apple App Site Association文件。指定每个应用程序将处理的网站部分。
您已经完成了第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
这对您不起作用吗?