我创建了一个新的ionic项目并为其添加了Firebase,但是每次我执行ionic服务-c并打开DevApp时,我都会在控制台中看到以下错误:
离子信息:
ionic (Ionic CLI) : 4.1.2 (C:\Users\xxx\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.0
科尔多瓦:
cordova(Cordova CLI):8.1.2(cordova-lib@8.1.1)
Cordova Platforms : ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.2.0, (and 5 other plugins)
系统:
NodeJS : v8.12.0 (C:\Program Files\nodejs\node.exe)
npm : 6.4.1
OS : Windows 10
app.component.ts:
export class MyApp {
rootPage: any = HomePage;
constructor(public platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, public toastCtrl: ToastController, private firebase: Firebase) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
try {
this.initializeFirebase();
} catch (error) {
this.firebase.logError(error);
}
});
}
initializeFirebase() {
if (!this.platform.is("core")) {
this.firebase.subscribe("all");
this.platform.is('android') ? this.initializeFirebaseAndroid() : this.initializeFirebaseIOS();
}
}
initializeFirebaseAndroid() {
this.firebase.getToken().then(token => { });
this.firebase.onTokenRefresh().subscribe(token => { })
this.subscribeToPushNotifications();
}
initializeFirebaseIOS() {
this.firebase.grantPermission()
.then(() => {
this.firebase.getToken().then(token => { });
this.firebase.onTokenRefresh().subscribe(token => { })
this.subscribeToPushNotifications();
})
.catch((error) => {
this.firebase.logError(error);
});
}
subscribeToPushNotifications() {
this.firebase.onNotificationOpen().subscribe((response) => {
if (response.tap) {
console.log(response.body);
//Received while app in background (this should be the callback when a system notification is tapped)
//This is empty for our app since we just needed the notification to open the app
} else {
console.log(response.body);
//received while app in foreground (show a toast)
let toast = this.toastCtrl.create({
message: response.body,
duration: 3000
});
toast.present();
}
});
}
}
app.module.ts:
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { Firebase } from '@ionic-native/firebase';
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
Firebase
]
})
export class AppModule {}
目前有人遇到相同的问题吗?
答案 0 :(得分:0)
您必须在provider
下的项目应用模块中添加firebase。您将来可能还需要为以后安装的任何插件执行此操作。
如果您使用的是Ionic3,则为文件app.module.ts
。
答案 1 :(得分:0)
这对我有用!!使用导入的类的对象之前,请使用platform.ready()函数。
constructor(public qrScanner: QRScanner) {
// solve the problem - "plugin not installed".
platform.ready().then(()=>{
this.qrscanner();
})
}
希望这对您有帮助...
答案 2 :(得分:0)
尝试检查 firebase云消息传递插件
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
也许仔细检查google-services.json的位置
projects\src\app\google-services.json
,最后重新添加 android并检查插件
ionic repair
答案 3 :(得分:0)
TL; DR-检查您使用的Cordova版本并进行更新以符合项目依赖项要求(即npm install -g cordova@9.0.0
)。
正在使用的构建工具版本(Cordova)与需要使用的软件包(插件)不兼容。
cordova-plugin-firebase-analytics
在运行Cordova 8.1时遇到类似的问题。看起来它在Android上运行良好,但在iOS上无法正常运行。调试时,我能够在控制台的错误日志中检测到错误,例如
尝试调用[方法],但是FirebaseAnalytics插件不是 已安装
重新添加包含--verbose
标志的iOS平台显示如下:
为iOS安装“ cordova-plugin-firebase-analytics” 插件不支持该项目的cordova版本。科尔多瓦:8.1.1,失败的版本要求:> = 9.0.0
在安装至少受支持的最低版本(9.0.0)并重建iOS平台(删除平台,添加平台,准备/运行/模拟iOS版本)后,问题已解决。
答案 4 :(得分:-1)
我也面临同样的问题,然后我尝试使用FCM代替Firebase。
我建议您同样使用FCM。对我来说很好。
ionic cordova plugin rm cordova-plugin-firebase
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install @ionic-native/fcm