晚上好。我正在尝试以这样的方式处理通知单击,即当用户单击通知时,将打开我的应用程序的特定页面。我正在使用 FIREBASE CAN MESSAGING 和 IONIC 3
这是 app.component.ts 文件中的代码,用于处理通知的代码是编写的:
import { Platform, Nav, ToastController } from 'ionic-angular';
import { HomePage } from '../pages/home/home';
import { Component, ViewChild } from '@angular/core';
import { FCM } from '@ionic-native/fcm';
import { Signup } from '../pages/signup/signup';
@Component({
templateUrl: 'app.html',
selector: 'Myappname',
})
export class MyApp {
@ViewChild(Nav) nv: Nav;
rootPage: any = HomePage;
constructor(public fcm: FCM, platform: Platform) {
platform.ready().then(() => {
fcm.onNotification().subscribe(data => {
if (data.wasTapped) {
this.nv.push(Signup);
} else {
console.log("Received in foreground");
}
})
});
}
}
在移动设备上收到信息时,如果用户单击它,则仅显示主页,并注意将他重定向到代码中指定的注册页面。
有什么帮助吗?谢谢。
我终于找到了解决方案。 由于我使用 Firebase Cloud 函数发送通知,以下是我用于在用户单击收到的通知时使 onNotification(( 工作的代码。
exports.Hello = functions.database.ref('/users/{userId}').onCreate(event=>{
admin.messaging().sendToTopic('all', {
data:{
"key1": value1,
"key2": value2
},
notification: {
clickAction : "FCM_PLUGIN_ACTIVITY",
sound : "default",
title : "Notification title",
body : "message content"
}
});
});
因此,我们必须将通知对象的 clickAction 属性设置为 FCM_PLUGIN_ACTIVITY,以使 onNotification(( 方法在用户点击通知时执行。
这是 app.component.ts in witch 中实现 onNotification(( 方法的代码示例。
import { Platform, Nav, ToastController } from 'ionic-angular';
import { HomePage } from '../pages/home/home';
import { Component, ViewChild } from '@angular/core';
import { FCM } from '@ionic-native/fcm';
import { Signup } from '../pages/signup/signup';
@Component({
templateUrl: 'app.html',
selector: 'Myappname',
})
export class MyApp {
@ViewChild(Nav) nv: Nav;
rootPage: any = HomePage;
constructor(public fcm: FCM, platform: Platform) {
platform.ready().then(() => {
fcm.onNotification().subscribe(data => {
if (data.wasTapped) {
this.nv.push(Signup);
} else {
console.log("Received in foreground");
}
})
});
}
}
现在,它工作正常!
尝试将根页面设置为注册页面,希望它能正常工作:
this.nv.setRoot(Signup);
如果这不起作用,请尝试在您的 fcm.onNotification(( 之前添加它
var $this = this;
然后使用 $this 在你的 if 语句中引用//(wasTapped(
$this.nv.setRoot(Signup);