使用 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 不能正常使用的解决办法