在支持通用链接的两个不同应用程序上支持相同的域..?

Posted

技术标签:

【中文标题】在支持通用链接的两个不同应用程序上支持相同的域..?【英文标题】:Supporting same domain on two different apps supporting universal links..? 【发布时间】:2016-02-08 13:37:11 【问题描述】:

我有一个支持通用链接的应用程序,它目前在应用商店中。

假设它支持域 www.example.com,因此可以通过它轻松打开通用链接。我们将在关联域中有 applinks:www.example.com。

现在说如果我想发布另一个应用程序,它也支持相同的域。现在 ios 将如何区分通过通用链接打开哪个应用程序..?

【问题讨论】:

【参考方案1】:

为了在两个不同的应用上支持 Universal Links 的单个域,您需要更改现有的 apple-app-site-association 文件,位于 https://domain/apple-app-site-association。

单应用支持

对于单个应用程序支持,它看起来像这样


    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "1234ABCDE.com.domain.myapp",
                "paths": ["*"]
            
        ]
    

多应用支持

为了支持多应用程序,您需要在applinksdetails 数组中添加一个键值对apple-app-site-association。是这样的


    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "1234ABCDE.com.domain.myApp",
                "paths": ["*"]
            ,
            
                "appID": "1234ABCDE.com.domain.mySecondApp",
                "paths": ["*"]
            ,
            
                "appID": "1234ABCDE.com.domain.myThirdApp",
                "paths": ["*"]
            
        ]
    

apple-app-site-association 文件的一般格式

文件如下所示:


"applinks": 
    "apps": [ ],
    "details": [
        
            "appID": "app_prefix.app_identifier",
            "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
        ,
        
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        
    ]


参考文献

How to support Universal Links in iOS App and setup server for it?

【讨论】:

您的 apple-app-site-association 文件的实现存在问题。您所有的应用程序都支持“*”,这意味着您的所有应用程序都可以处理域的所有页面。这样每次点击通用链接时都会打开最后安装的应用程序。 这就是为apple-app-site-association添加通用格式的原因 排除路径的子域怎么样?【参考方案2】:

我找到了解决方案,不过它非常简单。 我的问题是我的第一个应用程序通过声明来支持所有页面

“*”在 apple-app-site-association 文件的路径部分。现在我所要做的就是在我希望我的第二个应用程序处理的路径之一之前添加 NOT。

喜欢“不 /cabs”。我还没有测试它是否有效。我会在完成后立即发布更新。

【讨论】:

哇,您接受了自己的答案,而不是实际的答案。您的“答案”应该是对实际答案的评论。 @David 如果你仔细看,我在 Vineet 的回答前将近一个月就回答了,我之前接受了我的回答,因为它是实际问题的正确解决方案。 你说的很对。答案的顺序(在活动视图中)让我感到困惑,我确信我也检查了日期,但显然没有。我很抱歉我的评论语气。 @David 没问题 :) 感谢 Ankit,它为我节省了研究时间【参考方案3】:

Apple App Site Association 文件示例


    "applinks": 
        "apps": [],
        "details": [
            "appID": "D3KQX62K1A.com.example.photoapp",
            "paths": ["/albums"]
            ,
            
            "appID": "D3KQX62K1A.com.example.videoapp",
            "paths": ["/videos"]
        ]
    

重要提示:数组中字典的顺序决定了系统在查找匹配项时遵循的顺序。第一场比赛获胜,允许您指定一个应用程序处理您网站中的指定路径,并指定另一个应用程序处理其余部分。

参考资料: https://developer.apple.com/documentation/uikit/core_app/allowing_apps_and_websites_to_link_to_your_content/enabling_universal_links

【讨论】:

以上是关于在支持通用链接的两个不同应用程序上支持相同的域..?的主要内容,如果未能解决你的问题,请参考以下文章

如何将不同的域或子域打开到新选项卡以及相同的域链接到相同的选项卡

如果设备上安装的iOS通用链接上有多个支持的应用程序,是不是可以选择每次打开的应用程序?

使用 Spring Boot 和 Jackson 避免两个不同的域模型

两个程序相同的网站,放在两个不同的服务器,其中一个不能正常访问怎么回事?

当具有相同项目时,支持两个不同项目集之间的减法

iOS - 好好利用Safari 之 通用链接 Universal Link