首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ionic 4中使用cordova firebase.dynamiclinks插件?

如何在Ionic 4中使用cordova firebase.dynamiclinks插件?
EN

Stack Overflow用户
提问于 2020-02-27 15:16:41
回答 2查看 2.3K关注 0票数 2

我想在我的Ionic 4应用程序中使用Cordova Firebase Dynamiclink插件:https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks#installation

这也有一个Ionic-native-plugin用法:npm install @ionic-native/firebase-dynamic-links和usage:

代码语言:javascript
复制
import { FirebaseDynamicLinks } from '@ionic-native/firebase-dynamic-links/ngx';

constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }

...
this.firebaseDynamicLinks.onDynamicLink()
  .subscribe((res: any) => console.log(res), (error:any) => console.log(error));

问题是:我想使用在Ionic-native-plugin Cordova Firebase Dynamiclink插件中可用的createDynamicLink(parameters)方法,但

属性'createDynamicLink‘在'FirebaseDynamicLinks’类型上不存在。

因此,我需要直接使用Cordova Firebase Dynamiclink,并且我尝试使用它

代码语言:javascript
复制
import { cordova } from '@ionic-native/core';
...
cordova.plugins.firebase.dynamiclinks.createDynamicLink({
    link: "https://google.com"
}).then(function(url) {
    console.log("Dynamic link was created:", url);
}); 

但犯了错误

属性'plugins‘在type上不存在(pluginObj: any,methodName: string,config: CordovaOptions,args: IArguments \ any[]) => any’。

也试过移除进口

代码语言:javascript
复制
cordova.plugins.firebase.dynamiclinks.createDynamicLink({
    link: "https://google.com"
}).then(function(url) {
    console.log("Dynamic link was created:", url);
});

得到了这个

属性'firebase‘在'CordovaPlugins’类型上不存在。

科多瓦插件的正确用法是什么?

更新

离子本机插件现在包含在Cordova Firebase Dynamiclink插件中可用的所有方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-27 01:45:34

我相信这是一个更合适的评论,但我还没有很好的声誉。

目前,在@ionic-team/ionic-native回购(这里)中有一个PR开放。这暴露了额外的方法,但在此之前,您可以使用原始的回购这里来获得您想要的效果。为了安装回购,您必须遵循开发指南这里中的说明。干杯!

票数 6
EN

Stack Overflow用户

发布于 2022-02-10 15:19:49

我已经开发了一个离子5应用程序,它使用Firebase动态链接,它的工作很好,但它需要一些努力。我看了一些视频来了解Firebase动态链接是如何工作的,但是肯定有很多东西没有显示出来。

要回答最初的问题,您可以始终手动创建动态链接,这就是我在我们的解决方案中所做的。我们创建了一个动态链接,可以帮助用户登录(注册一个帐户)。我们的动态链接有来自后端进程的自定义onboardingId,该链接通过短消息提供给用户。

这是app.component.ts构造函数中的一些代码,当用户单击动态链接时会发生这样的情况:

代码语言:javascript
复制
// Handle the logic here after opening the app (app is already installed) with the Dynamic link
this.firebaseDynamicLinks.onDynamicLink().subscribe((res: any) =>  {
  console.log('app was opened with dynamic link');
  console.log(res);
  /*   This only fires on subsequent calls and not on app start 20220208 STR
  console.log(JSON.stringify(res)); //"{"deepLink":"https://localhost/onboard?onboardingId=8ed634b0-53b7-4a0f-b67e-12c06019982a","clickTimestamp":1643908387670,"minimumAppVersion":0}"
  var dynamicLink = JSON.parse(JSON.stringify(res));
  var deepLink = dynamicLink.deepLink;
  console.log(deepLink);
  if (deepLink.indexOf("onboard")>=0){
    this.isOnboarding = true;
  }
  alert("deepLink ="+ deepLink);
  */
}, (error:any) => {
  console.log(error)
});

我最初认为,如果用户没有安装应用程序,Firebase可以处理所有的魔术。我错了!您还必须处理代码,以拾取动态链接后,应用程序被安装。

下面的代码将从剪贴板读取动态链接,并在应用程序安装过程中幸存下来。放在app.component.ts ngOnInit()中。

代码语言:javascript
复制
this.platform.ready().then(() => {

  this.firebaseDynamicLinks.getDynamicLink().then((data) => {
    //added 20220208 STR try to help open the deep link if app is just installed
    if (data != null) {
      console.log(JSON.stringify(data));
      //alert("initializeApp():"+JSON.stringify(data));
      var dynamicLink = JSON.parse(JSON.stringify(data));
      var deepLink = dynamicLink.deepLink;
      console.log("initializeApp():"+deepLink);
      if (deepLink != "") {
        if (deepLink.indexOf("onboard")>=0){
          this.isOnboarding = true;
          this.deepLinkToOnboard(deepLink);
        }
      }
    }
  });}

因此,要在安装了Firebase插件之后处理动态链接,您必须有两部分代码:一个用于处理已经安装的应用程序,另一个用于处理该应用程序未安装的动态链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60436397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档