我正在使用ionic2
和FCM
。
当应用程序正在运行时,我可以接收到通知。
我需要在应用程序运行或不运行时都能接收到通知。
我该怎么做?
我正在使用ionic2
和FCM
。
当应用程序正在运行时,我可以接收到通知。
我需要在应用程序运行或不运行时都能接收到通知。
我该怎么做?
如果您已经在应用程序打开时收到通知,我假设您已经有一个服务器发送它(如Firebase Cloud Functions)和一个已配置为在应用程序中接收的插件。
首先,如果问题出现在IOS上,请验证生成的项目(ionic cordova build
之后)是否在XCode中启用了REMOTE PUSH NOTIFICATIONS
。在Android中,默认情况下启用此功能。
另一个可能是您在有效载荷中发送的属性以及您使用的接收插件。要在插件cordova-plugin-firebase
中显示通知,必须具有带有title
或body
的notification
属性,如下所示:
{
"notification": {
"title": 'a title',
"body": 'some text'
},
"data": {
"anydata1": 'data1',
"anydata2": 'data2',
"etc": 'etc'
}
}
对于插件phonegap-plugin-push
,规则类似。您必须具有notification
属性。这完全取决于插件。
您可以使用One-Signal
来解决您的需求:以下是如何在ionic-2中初始化的代码片段
通过终端安装OneSignal Cordova插件
ionic cordova plugin add onesignal-cordova-plugin
npm install --save @ionic-native/onesignal
重要提示:请按照Ionic Native网站的说明将提供程序导入到您的app.module.ts中,例如:
import {OneSignal} from '@ionic-native/onesignal';
@NgModule({
...
providers: [
...
OneSignal
...
]
})
export class AppModule { }
OneSignal
插件。app.ts
中,以便它在启动时运行,例如在 initializeApp()
方法内部:import {OneSignal} from '@ionic-native/onesignal';
import {Platform} from 'ionic-angular';
constructor(private _OneSignal: OneSignal, private _platform: Platform) {
startApp();
}
startApp() {
this._platform.ready().then(() => {
this._OneSignal.startInit(appId, googleProjectId);
this._OneSignal.inFocusDisplaying(this._OneSignal.OSInFocusDisplayOption.Notification);
this._OneSignal.setSubscription(true);
this._OneSignal.handleNotificationReceived().subscribe(() => {
// handle received here how you wish.
});
this._OneSignal.handleNotificationOpened().subscribe(() => {
// handle opened here how you wish.
});
this._OneSignal.endInit();
})
}
注意:请替换以下内容:
OneSignal 的 appId
FCM
的 googleProjectId