OneSignal - 如何在用户订阅后获得PlayerId?

问题描述 投票:2回答:2

在我的javascript代码中,我要求用户使用OnceSignal服务订阅网站通知,所以我这样做:

    OneSignal.registerForPushNotifications();

然后我试图通过以下方式捕获订阅用户的PlayerId:

    OneSignal.push(function() {
        OneSignal.on('notificationPermissionChange', function(permissionChange) {
            var currentPermission = permissionChange.to;

            if (currentPermission == "granted") {
                OneSignal.getUserId(function(userId) { 
                    console.log(userId);
                });
            }
        });

然后我得到userId并将其存储在我的mysql数据库中,以便稍后发送通知。但由于某些原因,userId与存储在OneSignal Server上的PlayerId不同,而格式相同。 UserId和PlayerId是不同的东西?如果是这样,我怎样才能在用户订阅推送后获得PlayerId?

push-notification onesignal
2个回答
3
投票

您很可能看到旧的用户ID。 notificationPermissionChange事件发生得太早,无法获取用户的ID。该事件仅用于分析,如果您想在订阅后查找用户的ID,请使用subscriptionChange事件。

SDK Docs链接:https://documentation.onesignal.com/docs/web-push-sdk


-1
投票

你好,这就是我用js Greetings完成的,我希望它对你有用。

window.plugins.OneSignal
            .addSubscriptionObserver(function(state){
            var datos = JSON.stringify(state);
            var valor = JSON.parse(datos); 
            var playerId = valor.to.userId
            console.log( playerId + ' *_IF_**PLAYER ID***' )                
});
© www.soinside.com 2019 - 2024. All rights reserved.