【问题标题】:IONIC 3: Plugin BackgroundMode dont work: Object(…) is not a functionIONIC 3:插件后台模式不起作用:Object(...) 不是函数
【发布时间】:2021-07-20 11:17:38
【问题描述】:

我需要在我的项目中运行代码“this.backgroundMode.enable()”,但它显示以下错误:

“Object(...) 不是函数”

它通过以下方式将其导入 app.module.ts:

import {BackgroundMode} from '@ ionic-native / background-mode / ngx';
...
providers: [
...
BackgroundMode
...]

在页面中(在我的情况下是在 app.component.ts 中,在 deviceready 之后,就像官方文档说的那样)我使用如下:

import {BackgroundMode} from '@ ionic-native / background-mode / ngx';
constructor(private backgroundMode: BackgroundMode) { }
...
this.backgroundMode.enable();

我需要在我的项目中运行这个插件

【问题讨论】:

  • 你可以在没有 /ngx 的情况下尝试 app.module.ts 导入插件

标签: ionic-framework ionic3


【解决方案1】:

我在这里https://stackoverflow.com/a/54398403/6617276回答了类似的问题

在 ionic.config.json 文件中检查您的项目类型。

如果类型是“ionic-angular”,则安装4.x.x版本。

npm i -s @ionic-native/background-mode@4.20.0

如果类型是“angular”,则安装5.x.x-beta版

npm i -s @ionic-native/background-mode@5.0.0-beta.24

注意

仅当您使用 Angular 6

时,才在导入结束时添加 ngx
import { BackgroundMode } from '@ionic-native/background-mode/ngx';

如果不从 app.module.ts 和 app.component.ts 中的导入中删除 ngx

import { BackgroundMode } from '@ionic-native/background-mode';

【讨论】:

  • 完美,现在可以使用插件了!但现在它为“this.backgroundMode.enable()”返回“未定义”......你能帮帮我吗?
  • this.backgroundMode.enable() 是一个 void 方法,它不会返回任何内容,它只会启用 backgroundMode。要检查是否启用了后台模式,您可以使用 this.backgroundMode.isEnabled() 返回一个布尔值。要检查后台模式是否处于活动状态,您可以使用 this.backgroundMode.isActive()
  • 好的,很好....但是,我如何测试 this.backgroundMode.isActive() 何时为真?我需要在应用程序处于 backgroundMode 的那一刻(无论何时),应用程序都会检测到它处于 backgroundMode
  • 当应用程序变为非活动状态(在后台运行)时,Cordova 触发“暂停”事件,您可以订阅该事件并检查 backgroundMode.isActive() 是否。类似于 platform.pause.subsribe(()=>{ if(this.backgroundMode.isActive()){ console.log("Background mode is active") } }) 。见谅,评论区的代码很难写
  • 谢谢:background-mode@4.20.0(4.20 版本)是诀窍(而不是 5.x)
猜你喜欢
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 2020-12-26
  • 2015-12-17
相关资源
最近更新 更多