我使用nativescript-local-notifications和nativescript-plugin-firebase。
我希望每次在服务器向我发送消息时创建通知。这是代码:
firebase.init({
storageBucket: 'gs://shao-by-partner-firebase.appspot.com',
persist: true, // optional, default false
onPushTokenReceivedCallback: function (token) {
Config.device_token = token;
console.log("Firebase plugin received a push token: " + token);
},
onMessageReceivedCallback: function (message) {
LocalNotifications.schedule([{
id: 1,
title: 'The title',
body: 'Recurs every minute until cancelled',
ticker: 'The ticker',
badge: 1,
smallIcon: 'res://heart.png'
}]).then(
function() {
console.log("Notification scheduled");
},
function(error) {
console.log("scheduling error: " + error);
}
)
}
}).then(
function (result) {
console.log("Firebase is ready");
},
function (error) {
console.log("firebase.init error: " + error);
}
);
}
但总是创建两个通知而不是一个。第一个通知是空的。第二个通知是我创建的。怎么了?
答案 0 :(得分:0)
您的onMessageReceived中没有任何内容可以确定消息是否包含任何内容。 您可以尝试向onMessageReceived函数添加条件语句,并检查消息是否包含内容。例如
if (message.title){
//send local notification
}
答案 1 :(得分:0)
我可能在这里错了,但您使用两个插件来处理远程通知?
nativescript-plugin-firebase
已经为您处理通知,我认为您不需要本地通知插件。
在您发布的示例中,您将收到原始通知(空白通知),并在onMessageReceivedCallback
中添加您创建的本地通知。
答案 2 :(得分:0)
我找到了解决方案。每当我创建LocalNotification时,我都会删除ID为0的通知: LocalNotifications.cancel(0); 但我仍然不知道它来自哪里。