Push notification 离子3中的推送通知错误
我正在尝试在我的Ionic 3应用程序中配置推送通知。我已经配置了我的离子云和Firebase。但我得到了一个错误,说: 无法在浏览器和设备中解析推送:(?,?)的所有参数 这是我的app.module.ts文件Push notification 离子3中的推送通知错误,push-notification,ionic2,ionic3,Push Notification,Ionic2,Ionic3,我正在尝试在我的Ionic 3应用程序中配置推送通知。我已经配置了我的离子云和Firebase。但我得到了一个错误,说: 无法在浏览器和设备中解析推送:(?,?)的所有参数 这是我的app.module.ts文件 import { BrowserModule } from '@angular/platform-browser'; import { HttpModule } from '@angular/http'; import { ErrorHandler, NgModule } from '
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
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 { CloudSettings, CloudModule } from '@ionic/cloud-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { PushPageModule } from '../pages/push/push.module';
const cloudSettings: CloudSettings = {
'core': {
'app_id': 'fe5f8133'
},
'push': {
'sender_id': '77303616548',
'pluginConfig': {
'ios': {
'badge': true,
'sound': true
},
'android': {
'iconColor': '#343434'
}
}
}
};
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
HttpModule,
PushPageModule,
CloudModule.forRoot(cloudSettings),
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
这是我的app.component.ts
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HomePage } from '../pages/home/home';
import {
Push,
PushToken
} from '@ionic/cloud-angular';
@Component({
templateUrl: 'app.html',
providers: [Push]
})
export class MyApp {
rootPage:any = HomePage;
logs;
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private push: Push) {
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();
this.push.register().then((t: PushToken) => {
return this.push.saveToken(t);
}).then((t: PushToken) => {
console.log('Token saved:', t.token);
this.logs = 'Token saved:', t.token;
});
this.push.rx.notification()
.subscribe((msg) => {
console.log('I received awesome push: ' + msg);
this.logs = 'I received awesome push: ' + msg;
});
});
}
}
这是错误消息:
您不应在组件或AppModule中将
推送设置为提供程序。这将在云角度模块中设置
删除:
@Component({
templateUrl: 'app.html',
// providers: [Push] -> remove this
})
export class MyApp {
检查离子云角度的代码
当您设置CloudModule.forRoot(config)
时,他们已经将Push设置为provider。Push还需要两个参数PushOptions
和PushDependencies
,这两个参数在依赖项注入中缺失
工作很有魅力,你能不能详细解释一下为什么我不应该把push设置为提供者谢谢
@NgModule()
export class CloudModule {
static forRoot(settings: CloudSettings): ModuleWithProviders {
return {
ngModule: CloudModule,
providers: [
{ provide: CloudSettingsToken, useValue: settings },
{ provide: DIContainer, useFactory: provideContainer, deps: [ CloudSettingsToken ] },
{ provide: Auth, useFactory: provideAuth, deps: [ DIContainer ] },
{ provide: Client, useFactory: provideClient, deps: [ DIContainer ] },
{ provide: Config, useFactory: provideConfig, deps: [ DIContainer ] },
{ provide: Deploy, useFactory: provideDeploy, deps: [ DIContainer ] },
{ provide: Push, useFactory: providePush, deps: [ DIContainer ] },
{ provide: User, useFactory: provideUser, deps: [ DIContainer ] },
{ provide: FacebookAuth, useFactory: provideFacebookAuth, deps: [ DIContainer ]},
{ provide: GoogleAuth, useFactory: provideGoogleAuth, deps: [ DIContainer ]}
]
};
}