gpt4 book ai didi

javascript - 如何使用 web(js) 在 OneSignal 中设置 External_User_Id?

转载 作者:行者123 更新时间:2023-12-05 00:01:45 25 4
gpt4 key购买 nike

我注意到 OneSignal 正在创建一个唯一的 player_id 并在任何用户首次加载我的网络应用程序时在其数据库中添加一列。

我正在尝试使用以下代码(根据 OneSignal docs )将自定义 external_user_id 添加到同一个信号数据库字段中:

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" ></script>
<script>
let externalUserId = "123456789";

OneSignal.push(function() {
OneSignal.setExternalUserId(externalUserId);
});
</script>

但不知何故,external_user_id 字段仍设置为空。

所以我添加了下面的代码。

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" ></script>
<script>
let externalUserId = "123456789";

window.OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "xoxoxoxoxoxoxoxoxo",
});
});

OneSignal.push(function() {
console.log("triggering");
OneSignal.setExternalUserId(externalUserId);
console.log("triggering");
});

它没有错误,但 external_user_id 仍未更新。

这是我添加到我的 Android Studio

的 OneSignal 代码
package com.appgrep.xoxoxo;

import android.app.Application;

public class OneSignal extends Application {

private static final String ONESIGNAL_APP_ID = "xoxoxoxoxoxoxoxoxo";

@Override
public void onCreate() {
super.onCreate();

// OneSignal Initialization
com.onesignal.OneSignal.initWithContext(this);
com.onesignal.OneSignal.setAppId(ONESIGNAL_APP_ID);
}
}

我只是想使用 Web (JS) 在 OneSignal 中添加 External_User_Id非常感谢任何帮助。

Amit 获取用户 id 的建议

var OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.getUserId(function(userId) {
console.log("OneSignal User ID:", userId);
$("#some").text(userId);
});
});

getUserId 函数未触发。

我可以这样做:

var OneSignal = window.OneSignal || [];

OneSignal.push(function() {
OneSignal.on('subscriptionChange', function (isSubscribed) {
OneSignal.push(function() {
OneSignal.getUserId(function(userId) {
console.log("OneSignal User ID:", userId);
});
});
});
});

但在我的场景中,没有订阅,所有用户一打开网络应用程序就会在一个信号中注册,并且订阅会自动勾选。

OneSignal user's screenshot

最佳答案

我已经尝试使用 web(js) 设置 external_user_id,它工作正常,没有问题。

要求

  • 工作 Onesignal 实现
  • 订阅通知

现在只需打开 Dev 控制台并粘贴以下代码来设置 external_user_id

let externalUserId = "123456789"; // You will supply the external user id to the OneSignal SDK
OneSignal.push(function() {
OneSignal.setExternalUserId(externalUserId);
});

现在检查是否设置了external_user_id

OneSignal.push(function() {
OneSignal.getExternalUserId().then(function(externalUserId){
console.log("externalUserId: ", externalUserId);
});
});

See screenshot of dev console

或者,访问 OneSignal 仪表板并检查用户,您将 external_user_id 确保使 external_user_id 列可见, Check external_user_id in dashboard image

完成测试后删除演示 external_user_id

OneSignal.push(function() {
OneSignal.removeExternalUserId();
});

文档:https://documentation.onesignal.com/docs/external-user-ids

请记住,如果您通过 Android SDK 设置 External_user_id 并希望在 Web 上更新它

Warning - Android SDK Data Synchronization

The OneSignal Android SDKs leverage cacheing on external_user_id andData Tags.

If setting external_user_id through the Edit device API Endpoint, thenuse the same endpoint to remove the external_user_id upon the userlogging out of the app.

The removeExternalUserId method will not work unless theexternal_user_id is set first with the setExternalUserId method onAndroid.

This is only applicable on the OneSignal Android Mobile App SDKs.

使用下面的代码

替换为您的应用程序页面的应用程序 ID

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" ></script>

<script>
window.OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "<APP_ID>",
});
});

OneSignal.getUserId((userId) => {
if (userId == null){
alert("Subscribe to Notification First")
return
}
alert(`Player id: is ${userId}`);
});
</script>

关于javascript - 如何使用 web(js) 在 OneSignal 中设置 External_User_Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72801714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com