1

我正在使用 NativeScriptpush-plugin接收从 Firebase Cloud Messaging (FCM) 发送的通知:

public constructor(
    private _services: PushService,
) {
    const settings = {
        senderID: "XXXXXXXX",
        badge: true,
        clearBadge: true,
        sound: true,
        alert: true,
        interactiveSettings: {
            actions: [{
                identifier: 'READ_IDENTIFIER',
                title: 'Read',
                activationMode: "foreground",
                destructive: false,
                authenticationRequired: true,
            }, {
                identifier: 'CANCEL_IDENTIFIER',
                title: 'Cancel',
                activationMode: "foreground",
                destructive: true,
                authenticationRequired: true,
            }],
            categories: [{
                identifier: 'READ_CATEGORY',
                actionsForDefaultContext: ['READ_IDENTIFIER', 'CANCEL_IDENTIFIER'],
                actionsForMinimalContext: ['READ_IDENTIFIER', 'CANCEL_IDENTIFIER'],
            }],
        },
        notificationCallbackIOS: data => {
            console.log("DATA: " + JSON.stringify(data));
        },
        notificationCallbackAndroid: (message, data, notification) => {
            console.log("MESSAGE: " + JSON.stringify(message));
            console.log("DATA: " + JSON.stringify(data));
            console.log("NOTIFICATION: " + JSON.stringify(notification));

            alert(message);
        },
    };

    PushNotifications.register(settings, data => {
        console.log("REGISTRATION ID: " + data);

        this.toDeviceToken = data;

        PushNotifications.onMessageReceived(settings.notificationCallbackAndroid);
    }, error => {
        console.log(error);
    });
}

使用此代码,notificationCallbackAndroid当我从 Postman 发送它们时,我可以在方法中接收成功消息。这是我在日志上得到的:

{
    "multicast_id": 8382252195536318747,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:1521270133609562%161a06bff9fd7ecd"
        }
    ]
}

但是,通知栏中不会显示任何通知。

我们是否必须使用单独的方法来显示通知?

4

2 回答 2

1

另外,通知似乎在 iOS 上运行良好。但在 Android 上,它仅在应用程序处于活动状态时才有效。

一些论坛声明推送有效负载需要一个“通知”结构来自动添加到通知托盘,但我查看了提交历史,看起来它已经(尝试)修复了。

无论哪种方式,我都将相同的推送发送 SDK 与另一个应用程序开发 sdk (Xamarin) 一起使用,并且不希望自定义代码在 Nativescript 应用程序上发送不同的有效负载。

我将尝试将 Danzigers 回答为仅限 Android 的代码,看看是否有帮助。如果不是,我将尝试恢复到该插件的旧版本,因为我了解整个问题是回归。

PS。我看到这个插件已经过时了,取而代之的是 firebase 插件,但是当只需要 GCM 和 APS 时,我仍然喜欢这个插件的简单性(和更小的占用空间?)。

更新

安装了本地通知插件,并添加了仅在 Android 上使用它的代码,一切都很好。

于 2018-09-18T11:19:29.067 回答
0

push-plugin不会自动创建/显示通知,它只会在收到通知时通知您。

您需要使用另一个插件 ,nativescript-local-notifications来创建/显示它。所以,在你的里面notificationCallbackAndroidnotificationCallbackIOS你应该有这样的东西:

LocalNotifications.schedule([{
    title: notificationData.title,
    body: notificationData.body,
}]);

此外,onMessageReceived已弃用,现在您应该只使用notificationCallbackAndroidand/or notificationCallbackIOS,因此一旦更新push-plugin到最新版本,您就可以摆脱这一行:

PushNotifications.onMessageReceived(settings.notificationCallbackAndroid);
于 2018-08-27T10:03:42.630 回答