使用 react-native 在 iOs 上处理同一个应用程序的多个环境的深层链接

Posted

技术标签:

【中文标题】使用 react-native 在 iOs 上处理同一个应用程序的多个环境的深层链接【英文标题】:Handle deep links with multiple environments for the same app on iOs using react-native 【发布时间】:2020-01-08 12:00:41 【问题描述】:

我有一个带有多个环境的 react-native 应用程序。

Dev, prod, ... 这意味着我在手机 App Dev、App Prod 上安装了多个应用程序的“副本”。

这些位于不同的包标识符下:

com.myapp.dev com.myapp.prod

我使用深层链接打开应用程序,这在 Android 上非常有效,因为它会询问您要使用哪个应用程序打开它,但在 ios 上它只会打开第一个安装的应用程序?? ??我找不到路,例如:

启动develop-app://whatever/1 并在开发应用程序中打开它 启动 prod-app://whatever/1 并在 Prod 应用中打开它

我错过了什么?

这是我定义的 url 类型:

apple-app-site-association 文件也如下所示:


    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "1234.com.myapp.dev",
                "paths": ["*"]
            ,
            
                "appID": "1234.com.myapp.prod",
                "paths": ["*"]
            
        ]
    

更新

我发现的第一个问题是apple-app-site-association 没有使用Content-Type 标头,因此应用无法识别该文件。 应定义每个环境应识别的路径:

    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "1234.com.myapp.dev",
                "paths": ["/dev/*"]
            ,
            
                "appID": "1234.com.myapp.prod",
                "paths": ["/prod/*"]
            
        ]
    

现在我可以按预期看到网站顶部的横幅 Open with App Dev

【问题讨论】:

你能在这里分享你的apple-app-site-association文件吗? 太棒了!所以现在您的问题已经解决了,请您花点时间将我的回答标记为已接受并点赞,以便有相同问题的每个人都可以在这里找到它? 【参考方案1】:

您必须指定哪个应用程序要打开哪个路径

例如,您的域是 example.com

您必须在 apple-app-site-association 文件中为 dev 和 prod 应用程序指定不同的路径模式

例如,您可以更新您的apple-app-site-association 文件,如下所示


    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "1234.com.myapp.dev",
                "paths": ["/dev/*"]
            ,
            
                "appID": "1234.com.myapp.prod",
                "paths": ["/prod/*"]
            ,
        ]
    

现在,假设您点击下面的网址,您将被定向到 cmets 中提到的应用程序

https://example.com/dev/123?id=3 // 打开开发应用程序 https://example.com/dev?id=2 // 打开开发应用程序 https://example.com/prod/123 // 打开产品应用程序 https://example.com/prod // 打开产品应用 https://example.com/prod/123?name=john // 打开产品应用程序

【讨论】:

以上是关于使用 react-native 在 iOs 上处理同一个应用程序的多个环境的深层链接的主要内容,如果未能解决你的问题,请参考以下文章

react-native expo android macos问题

React-Native:如何在真实的 iOS 设备上使用“Remote JS Debugger”?

使用 fastlane 匹配方法在本地 iOS 设备上运行 react-native 应用程序

react-native 在iOS上使用http链接的图片地址不显示| iOS9 & iOS10 HTTP 不能正常使用的解决办法

React-native:如何从 Windows 构建 ios

使用 react-native 在 iOS 中设置半透明状态栏