React-Native - com.google.android.gms.common.api.ApiException:400:无法缩短短动态链接

Posted

技术标签:

【中文标题】React-Native - com.google.android.gms.common.api.ApiException:400:无法缩短短动态链接【英文标题】:React-Native - com.google.android.gms.common.api.ApiException: 400: Cannot shorten a short Dynamic Link 【发布时间】:2020-04-01 11:05:08 【问题描述】:

我正在开发我的 react native 动态链接功能。

我已尝试使用以下代码创建链接:

const generatedDynamicLink = await firebase.dynamicLinks().buildLink(
            link: `https://test.page.link/groupinvite/name=test`,
            domainUriPrefix: `https://test.page.link/groupinvite`,
            android: 
                packageName: 'com.test',
            ,
            ios: 
                bundleId: 'com.test',
                appStoreId: '1546898245',
            ,
        );

上述方法效果很好。

但是,它给了我一个长链接,比如, https://test.page.link//guestinvite?apn=com.test&ibi=com.test&isi=1498742044&link=https%3A%2F%2Ftest.page.link/%2Fguestinvite%2Fname%3Dtest

所以为了缩短链接,我将 firebase.dynamicLinks().buildLink(....) 替换为“firebase.dynamicLinks().shortLink(.....,"SHORT")” 但它给我一个错误,例如,

错误:[dynamicLinks/build-failed] com.google.android.gms.common.api.ApiException:400:无法缩短短动态链接:

那么任何人都可以建议我一个解决方法来创建一个短链接,如“com.test/guestinvite/abdgsyd”吗?

另外,如何轻松获取初始链接。

目前我正在使用以下链接,但我无法从链接中获取查询参数“名称”。

componentDidMount() 
    dynamicLinks().getInitialLink().then((initialLink)=>
    console.log('initialLink : ', initialLink.url);
    );
  

我正在使用以下依赖项:

"@react-native-firebase/app": "^6.3.4",
"@react-native-firebase/dynamic-links": "^6.3.4",

谢谢。

【问题讨论】:

【参考方案1】:

按照this 教程,他们使用:

import dynamicLinks from '@react-native-firebase/dynamic-links';

const link = await dynamicLinks().buildLink(
  link: 'https://invertase.io',
  domainUriPrefix: 'https://xyz.page.link',
  analytics: 
    campaign: 'banner',
  
);

在你的情况下,它会是:

import dynamicLinks from '@react-native-firebase/dynamic-links';

const generatedDynamicLink = await dynamicLinks().buildLink(
  link: `https://test.page.link/groupinvite/name=test`,
  domainUriPrefix: `https://test.page.link/groupinvite`,
  android: 
      packageName: 'com.test',
  ,
  ios: 
      bundleId: 'com.test',
      appStoreId: '1546898245',
  
);

我不知道这是否可行,但我希望如此。

【讨论】:

以上是关于React-Native - com.google.android.gms.common.api.ApiException:400:无法缩短短动态链接的主要内容,如果未能解决你的问题,请参考以下文章

google-services 插件无法检测到 com.google.android.gms 或 com.google.firebase 的任何版本 - 奇怪的行为

react-native init 指定 react 版本和 react-native 版本

React-native:看起来你全局安装了 react-native

将骆驼与 Google PubSub 组件一起使用会为 com.google.api.client.repackaged.com.google.common.base.Strings 提供 NoCla

在另一个 React-Native 库中使用 React-Native 库

google iosched示例项目:com.google.api.client.repackaged.com.google.common.base不存在