Nativescript。 nativescript-local-notifications始终会创建两个通知

时间:2016-11-25 09:53:53

标签: firebase notifications nativescript

我使用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);
        }
    );
}

但总是创建两个通知而不是一个。第一个通知是空的。第二个通知是我创建的。怎么了?

enter image description here

3 个答案:

答案 0 :(得分:0)

您的onMessageReceived中没有任何内容可以确定消息是否包含任何内容。 您可以尝试向onMessageReceived函数添加条件语句,并检查消息是否包含内容。例如

if (message.title){
   //send local notification
}

答案 1 :(得分:0)

我可能在这里错了,但您使用两个插件来处理远程通知?

nativescript-plugin-firebase已经为您处理通知,我认为您不需要本地通知插件。

在您发布的示例中,您将收到原始通知(空白通知),并在onMessageReceivedCallback中添加您创建的本地通知。

https://github.com/EddyVerbruggen/nativescript-plugin-firebase/blob/master/docs/MESSAGING.md#handling-a-notification

答案 2 :(得分:0)

我找到了解决方案。每当我创建LocalNotification时,我都会删除ID为0的通知:      LocalNotifications.cancel(0); 但我仍然不知道它来自哪里。