【问题标题】:Issue calling isAvailable method @ionic-native/email-composer问题调用 isAvailable 方法 @ionic-native/email-composer
【发布时间】:2019-10-28 09:56:07
【问题描述】:

当前行为: 我已根据 ionic 文档安装了电子邮件编写器组件,并且 isAvailable 功能不可用。我已阅读有关此主题的各种文档,但找不到任何方法使该方法起作用。

该插件的其余部分在我的 Android 设备上发送电子邮件时可以完美运行,因此该插件肯定已安装并可以正常工作。

Error: Uncaught (in promise): TypeError: EmailComposer.getPlugin(...).isAvailable is not a function

预期行为: 我希望 isAvailable 方法返回 true 或 false。

重现步骤:

  1. $ ionic start myApp 空白
  2. $ ionic cordova plugin add cordova-plugin-email-composer
  3. $ npm install @ionic-native/email-composer

相关代码:

import { Component } from '@angular/core';
import { EmailComposer } from '@ionic-native/email-composer/ngx';

@Component({
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss']
})
export class HomePage {
    constructor(private emailComposer: EmailComposer) {}

    public canEmail: boolean = false;

    ionViewDidEnter() {
        this.emailComposer.isAvailable().then((available: boolean) => {
            if (available) {
                this.canEmail = true;
            }
        });
    }    
}

其他信息:

Ionic:                                                                                                               

   Ionic CLI                     : 5.4.2 (C:\Users\andy\AppData\Roaming\npm\node_modules\ionic)                      
   Ionic Framework               : @ionic/angular 4.11.3                                                             
   @angular-devkit/build-angular : 0.801.3                                                                           
   @angular-devkit/schematics    : 8.1.3                                                                             
   @angular/cli                  : 8.1.3                                                                             
   @ionic/angular-toolkit        : 2.0.0                                                                             

Cordova:                                                                                                             

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)                                                                     
   Cordova Platforms : android 8.1.0                                                                                 
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 5 other plugins)

Utility:                                                                                                             

   cordova-res : not installed                                                                                       
   native-run  : 0.2.8                                                                                               

System:                                                                                                              

   Android SDK Tools : 26.1.1 (c:\Android\Sdk)                                                                       
   NodeJS            : v10.15.2 (C:\Program Files\nodejs\node.exe)                                                   
   npm               : 6.4.1                                                                                         
   OS                : Windows 10                                                                                    

【问题讨论】:

  • 好像没有安装插件。你添加了插件吗,cordova plugin add cordova-plugin-email-composer
  • 是的,我做到了,我按照 Ionic 网站上的说明进行操作,并且该模块已安装到 node_modules 文件夹中,如果我绕过对 isAvailable 的调用,则发送电子邮件 GMail 表单将启动为会期待。
  • 不幸的是,@ionic-native/email-composer 模块不支持这些功能:/

标签: cordova ionic-framework ionic4


【解决方案1】:

以防万一它可以帮助其他人。

经过几天的调查,我得出结论,cordova-plugin-email-composer 与 Ionic 原生库不符。我试图自己解决这个问题,我的@ionic-native fork 可以在这里找到@ionic-native 我更改的特定文件在这里src\@ionic-native\plugins\email-composer.index.ts

我在主要的 ionic-native 存储库中创建了一个拉取请求,但这是我第一次尝试为这样的项目做出贡献,因此不确定结果!

【讨论】:

  • 谢谢你!我尝试回滚到 cordova-plugin-email-composer@0.8.15 (最后使用 isAvailable 方法)以允许使用 @ionic-native/email-composer@4.2.0 .... 但无法让它工作.对于其他寻求帮助的人:从这个 fork 复制 @ionic-native\plugins\email-composer\index.ts 并将其添加到您的项目中 - 请务必将其添加为 app.module.ts 中的提供程序。更新代码中的任何 .isAvailable() 调用以使用 .hasAccount()。删除您的应用程序的 @ionic-native/email-composer。删除 node_modules、插件和平台目录并重新安装节点模块和平台。
  • 不用担心,Ionic 似乎不太热衷于让社区帮助解决此类问题,他们似乎更有兴趣尝试向每个应用程序出售 5,000 美元的企业许可证,而不是大声笑!
猜你喜欢
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2019-02-27
  • 2018-04-16
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
相关资源
最近更新 更多