OneSignal - 如何在用户订阅后获取 PlayerId?
OneSignal - How to get PlayerId after user subscribes?
在我的 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);
});
}
});
然后我获取该用户 ID 并将其存储在我的 mysql 数据库中,以便稍后发送通知。但由于某种原因,userId 与存储在 OneSignal Server 上的 PlayerId 不同,但格式相同。 UserId 和 PlayerId 是不同的东西吗?如果是这样,用户订阅推送后如何获取PlayerId?
很可能您看到的是旧用户 ID。 notificationPermissionChange 事件发生得太早,无法获取用户 ID。该事件仅用于分析,如果您想在订阅后查找用户的 ID,请使用 subscriptionChange 事件。
SDK 文档 Link:https://documentation.onesignal.com/docs/web-push-sdk
你好,这是我用 js 完成的方法
问候,我希望它对你有用。
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***' )
});
下面的代码曾经很好地工作,但是最近,在绑定到 "subscriptionChange" 事件时根本无法获取玩家 ID。
事实上,在事件侦听器中,"OneSignal.push" 执行后没有任何内容。
尝试删除它并直接转到“OneSignal.getUserId”,但似乎承诺 returns 什么都没有。
OneSignal.on('subscriptionChange', function (isSubscribed) {
console.log('is subscribed', isSubscribed);
OneSignal.push(function() {
console.log('attempt to get id'); // doesn't get this far
OneSignal.getUserId(function(userId) {
console.log('user id', userId); // doesn't get this far
});
});
});
奇怪的是,如果将其粘贴到控制台中,可以正常获取播放器 ID,只是在回调期间没有任何返回。
OneSignal.getUserId(function(userId) {
console.log('user id', userId);
});
似乎真的很奇怪为什么代码刚刚停止工作,因为我们使用这个确切的代码一年多了。
有什么建议吗?
在我的 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);
});
}
});
然后我获取该用户 ID 并将其存储在我的 mysql 数据库中,以便稍后发送通知。但由于某种原因,userId 与存储在 OneSignal Server 上的 PlayerId 不同,但格式相同。 UserId 和 PlayerId 是不同的东西吗?如果是这样,用户订阅推送后如何获取PlayerId?
很可能您看到的是旧用户 ID。 notificationPermissionChange 事件发生得太早,无法获取用户 ID。该事件仅用于分析,如果您想在订阅后查找用户的 ID,请使用 subscriptionChange 事件。
SDK 文档 Link:https://documentation.onesignal.com/docs/web-push-sdk
你好,这是我用 js 完成的方法 问候,我希望它对你有用。
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***' )
});
下面的代码曾经很好地工作,但是最近,在绑定到 "subscriptionChange" 事件时根本无法获取玩家 ID。
事实上,在事件侦听器中,"OneSignal.push" 执行后没有任何内容。
尝试删除它并直接转到“OneSignal.getUserId”,但似乎承诺 returns 什么都没有。
OneSignal.on('subscriptionChange', function (isSubscribed) {
console.log('is subscribed', isSubscribed);
OneSignal.push(function() {
console.log('attempt to get id'); // doesn't get this far
OneSignal.getUserId(function(userId) {
console.log('user id', userId); // doesn't get this far
});
});
});
奇怪的是,如果将其粘贴到控制台中,可以正常获取播放器 ID,只是在回调期间没有任何返回。
OneSignal.getUserId(function(userId) {
console.log('user id', userId);
});
似乎真的很奇怪为什么代码刚刚停止工作,因为我们使用这个确切的代码一年多了。
有什么建议吗?