我注意到 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);
});
});
});
});
但在我的场景中,没有订阅,所有用户一打开网络应用程序就会在一个信号中注册,并且订阅会自动勾选。
最佳答案
我已经尝试使用 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);
});
});
或者,访问 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 and Data Tags.
If setting external_user_id through the Edit device API Endpoint, then use the same endpoint to remove the external_user_id upon the user logging out of the app.
The removeExternalUserId method will not work unless the external_user_id is set first with the setExternalUserId method on Android.
This is only applicable on the OneSignal Android Mobile App SDKs.
使用下面的代码
将
<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/