使用 swift 与网站进行通用链接

Posted

技术标签:

【中文标题】使用 swift 与网站进行通用链接【英文标题】:Universal linking with website by using swift 【发布时间】:2019-10-24 09:06:25 【问题描述】:

我在我的应用程序中使用 Universal-linking,为此,我制作了以下 apple-app-site-association 文件,就像下面的代码一样。

我将此文件放入服务器,请在此处找到:- http://dev.2ULaundry.com/apple-app-site-association

我还将域 URL 添加到关联域下的项目文件的功能中。

但是我的通用链接不起作用,请帮助我。

"applinks": 
        "apps": [],
        "details": [
            
                "appID": "D929J2.com.apple.wwdc",
                "paths": [ "/scheduled-pickups/","/new-schedule/", "dashboard-1", "/refer-a-friend/", "/price-list/", "/give-a-gift/", "/locations", "2u-rewards/", "payments/"]
            
        ] 
     
 

并将以下代码添加到 appdelegate 文件中也用于 hadling。

    func application(_ application: UIApplication,
                         continue userActivity: NSUserActivity,
                         restorationHandler: @escaping ([Any]?) -> Void) -> Bool
        
            if userActivity.activityType == NSUserActivityTypeBrowsingWeb 
                let url = userActivity.webpageURL!
                let userurl = url.absoluteString

                    if userurl.contains("/scheduled-pickups/")
                    
                        let innerPage = UIStoryboard.loadPickupController()
                        innerPage.selectedfrom = SelectedFromVc.Deeplinking.rawValue
                        let nav = UINavigationController.init(rootViewController: innerPage)
                        nav.isNavigationBarHidden = true
                        self.window?.rootViewController = nav

                    

【问题讨论】:

您必须使用此 AASA 验证器 branch.io/resources/aasa-validator 验证您的网站域 您好,会显示错误,其实这些文件是我的后端人员放入服务器的,我们如何解决这个问题。 你必须得到json文件或者让他们知道aasa验证器,请看我下面的详细cmets 【参考方案1】:

您应该检查您的域是否可以使用通用链接。你可以在这里做:https://branch.io/resources/aasa-validator/。

我已经检查了您的域http://dev.2ulaundry.com 并且您的域存在一些问题。修复它们,应该没问题。

【讨论】:

我不知道您的服务器是如何配置的,但您可以尝试将apple-app-site-association 文件放入您身边根文件夹的 .well-known/ 文件夹中。 在我这边意味着我的本地 Xcode 项目中没有文件,该文件仅在服务器中。 当然,这个文件应该在服务器端可用。 关于如何将该文件放入服务器的任何想法。 什么意思?如果您已经将此文件放在服务器上,那么您应该能够创建一个文件夹 .well-known/ 并将此文件放在该站点的该文件夹中。【参考方案2】:

在实施之前,您必须使用此 AASA 验证器 https://branch.io/resources/aasa-validator/ 验证您的网站域。它几乎没有警告,所以请运行验证器并解决问题。

根据您的分享,域以“http”开头,但

通用链接仅服务于“https”

如果您将 AASA 文件放在下面的路径中也会很好

https://dev.2ulaundry.com/.well-known/apple-app-site-association

由于我在通用链接和应用链接上花费了很多时间,所以我的 建议免费使用Firebase dynamic link 或 Branch.io 在浪费你的时间之前。通用链接会产生很多问题 就像您无法检查应用程序的可用性(应用程序是否已安装)和 您不能通过 Apple/Play 商店传递参数。

【讨论】:

你重复了我的答案:) 酷哥们,我的意思是强调通用链接的问题。即使他选择通用链接,这些都是基本的验证。 :-) 你好 RaviChandra 谢谢你 AASA 文件位置路径 wellknown 是我们自己的文件夹或必须并且应该是名称 .well-known 您必须在根目录中创建文件夹(名称为 .well-known)并按预期设置路径。例如:在 nginx 服务器中,我们在 default.config 文件中设置路径,如下所示“location /.well-known/apple-app-site-association try_files $uri /.well-known/apple-app-site-association ; "

以上是关于使用 swift 与网站进行通用链接的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 通用链接(Universal Links)

Swift iOS - 使用 p12 对网站进行身份验证

IOS- 与 Firebase 的通用链接和使用 location.href 的错误?

如何使用 vimperator 与使用子菜单的网站进行交互? [关闭]

带有重定向的通用链接在 iOS 中不起作用

如何使用nodejs做爬虫程序