使用 FCM 的 Ionic 2 推送通知
Ionic 2 Push Notifications with FCM
我正在使用 Ionic Native FCM
在我的 Android Ionic 2 应用程序上实施推送通知
当我在前台收到通知时它有效,但是当我在后台收到通知并且点击它时,没有任何反应。
app.component.ts
firebaseInit(){
//Firebase
this.fcm.subscribeToTopic('all');
this.fcm.getToken()
.then(token => {
console.log(token);
this.nativeStorage.setItem('fcm-token', token);
});
this.fcm.onNotification().subscribe(
data => {
console.log("NOTIF DATA: " + JSON.stringify(data));
if(data.wasTapped){
this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
console.info('Received in bg')
}else{
let alert = this.alertCtrl.create({
title: data.subject,
message: "New memorandum",
buttons: [
{
text: 'Ignore',
role: 'cancel'
},
{
text: 'View',
handler: () => {
this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
}
}
]
});
alert.present();
console.info('Received in fg')
}
});
this.fcm.onTokenRefresh()
.subscribe(token => {
console.log(token);
})
}
单击系统托盘中的通知后,if(data.wasTapped)
条件没有消失。
编辑
该应用程序打开但仅在主页中打开,而不是我设置的指定页面 this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
当应用程序被杀死或未被杀死时,我也无法收到通知运行。
您可以使用 push
插件代替 FCM
。
this.push.createChannel({
id: "testchannel1",
description: "My first test channel",
importance: 3
}).then(() => console.log('Channel created'));
然后您可以使用 pushObjects 指定您的通知需求,如声音、离子等。
const options: PushOptions = {
android: {},
ios: {
alert: 'true',
badge: true,
sound: 'false'
},
windows: {},
browser: {
pushServiceURL: 'http://push.api.phonegap.com/v1/push'
}
};
之后无论是否使用该应用程序,您都可以轻松收到通知
const pushObject: PushObject = this.push.init(options);
pushObject.on('registration').subscribe((registration: any) => this.nativeStorage.setItem('fcm-token', token));
pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification));
您可以使用 pushObject init
中的 forceShow:true
选项让应用程序显示通知,无论您是否正在使用该应用程序。
点击通知后,应用程序会收到通知有效负载,应用程序主页设置为默认页面。
我正在使用 Ionic Native FCM
在我的 Android Ionic 2 应用程序上实施推送通知当我在前台收到通知时它有效,但是当我在后台收到通知并且点击它时,没有任何反应。
app.component.ts
firebaseInit(){
//Firebase
this.fcm.subscribeToTopic('all');
this.fcm.getToken()
.then(token => {
console.log(token);
this.nativeStorage.setItem('fcm-token', token);
});
this.fcm.onNotification().subscribe(
data => {
console.log("NOTIF DATA: " + JSON.stringify(data));
if(data.wasTapped){
this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
console.info('Received in bg')
}else{
let alert = this.alertCtrl.create({
title: data.subject,
message: "New memorandum",
buttons: [
{
text: 'Ignore',
role: 'cancel'
},
{
text: 'View',
handler: () => {
this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
}
}
]
});
alert.present();
console.info('Received in fg')
}
});
this.fcm.onTokenRefresh()
.subscribe(token => {
console.log(token);
})
}
单击系统托盘中的通知后,if(data.wasTapped)
条件没有消失。
编辑
该应用程序打开但仅在主页中打开,而不是我设置的指定页面 this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
当应用程序被杀死或未被杀死时,我也无法收到通知运行。
您可以使用 push
插件代替 FCM
。
this.push.createChannel({
id: "testchannel1",
description: "My first test channel",
importance: 3
}).then(() => console.log('Channel created'));
然后您可以使用 pushObjects 指定您的通知需求,如声音、离子等。
const options: PushOptions = {
android: {},
ios: {
alert: 'true',
badge: true,
sound: 'false'
},
windows: {},
browser: {
pushServiceURL: 'http://push.api.phonegap.com/v1/push'
}
};
之后无论是否使用该应用程序,您都可以轻松收到通知
const pushObject: PushObject = this.push.init(options);
pushObject.on('registration').subscribe((registration: any) => this.nativeStorage.setItem('fcm-token', token));
pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification));
您可以使用 pushObject init
中的 forceShow:true
选项让应用程序显示通知,无论您是否正在使用该应用程序。
点击通知后,应用程序会收到通知有效负载,应用程序主页设置为默认页面。