Firebase 动态链接无法按预期使用自定义域

ugr*_*sun 6 android ios react-native firebase-dynamic-links

我有 example.com 自定义域,我想通过动态链接邀请成员加入应用程序内的群组。

\n

我想使用 app.example.com/ 作为前缀。

\n

所有已安装的库、iOS 版 firebase 上的团队 ID 均已定义并使用新的 google services plist 导入。

\n

所以我根据自己的愿望准备的网址是这样的(将其构建为短链接 app.example.com/SOMERANDOMTHING)

\n
https://app.example.com/?link=https://example.com/joingroup?groupid=SOMEGROUPID&apn=com.myorganization.myapp&amv=4&ibi=com.myorganization.myapp&isi=TEAMID&imv=4&ius=myapp\n
Run Code Online (Sandbox Code Playgroud)\n

在 iOS 上:

\n

添加到 info.plist:

\n
<key>FirebaseDynamicLinksCustomDomains</key>\n<array>\n    <string>https://app.example.com</string>\n</array>\n
Run Code Online (Sandbox Code Playgroud)\n

还添加applinks:app.example.com到关联域\n并且添加到 URL 方案,添加 com.myorganization.myapp

\n

我在组件上的代码确实安装了:

\n
    componentDidMount() {\n\n     var that = this\n\n    dynamicLinks().onLink((link) => {\n\n        \n        that.handleDynamicLink(link)\n\n\n    })\n\n\n    if(Platform.OS == 'android')\xc2\xa0{\n\n\n    dynamicLinks().getInitialLink().then((link2) => {\n\n        if(link2) {\n\n            \n\n            that.handleDynamicLink(link2)\n\n        }\n
Run Code Online (Sandbox Code Playgroud)\n

问题

\n

在安卓上

\n
    \n
  1. 当单击链接从头开始重新打开应用程序时,它调用\ngetInitialLink,onLink 不起作用(这就是为什么我选择平台\n用于 getinitiallink,因为在 ios 上这两个功能都工作)。

    \n
  2. \n
  3. 另外,当点击链接时;没有像“使用 MyApp 打开”这样的选项,因此链接\n不与 MyApp 关联,单击浏览器后\n决定使用 MyApp 打开链接。(好吧,它可以工作,但不酷)

    \n
  4. \n
  5. 如果我将其添加到 AndroidManifest:

    \n
    <data android:host="app.example.com" android:scheme="http"/>\n<data android:host="app.example.com" android:scheme="https"/>\n
    Run Code Online (Sandbox Code Playgroud)\n

    这次用我的应用程序打开链接,android 识别出链接\n属于 MyApp,但 getInitialLink 和 onLink 都不起作用。

    \n
  6. \n
\n

在 iOS 上

\n

onLink 可以工作,但它没有将结果传输到应用程序;它只是转移所有链接

\n
https://app.example.com/?link=https://example.com/joingroup?groupid=SOMEGROUPID&apn=com.myorganization.myapp&amv=4&ibi=com.myorganization.myapp&isi=TEAMID&imv=4&ius=myapp\n
Run Code Online (Sandbox Code Playgroud)\n

代替

\n
https://example.com/joingroup?groupid=SOMEGROUPID\n
Run Code Online (Sandbox Code Playgroud)\n

所以我陷入了这些问题,感谢您的帮助

\n

Ale*_*lex 0

如果您使用一个链接作为另一个链接的参数,则这是可能的。我建议用以下内容替换它

https://app.example.com/?link=https%3A%2F%2Fexample.com%2Fjoingroup%3Fgroupid%3DSOMEGROUPID&apn=com.myorganization.myapp&amv=4&ibi=com.myorganization.myapp&isi=TEAMID&imv=4&ius=myapp
Run Code Online (Sandbox Code Playgroud)

如果您使用 JavaScript 手动创建链接,则可以使用encodeURIComponent

const link = encodeURIComponent('https://example.com/joingroup?groupid=SOMEGROUPID');
const url = `https://app.example.com/?link=${link}&apn=com.myorganization.myapp&amv=4&ibi=com.myorganization.myapp&isi=TEAMID&imv=4&ius=myapp`;
console.log(url)
Run Code Online (Sandbox Code Playgroud)