OneSignal 获取玩家 ID

Jul*_*zar 3 javascript intel-xdk onesignal

我正在我的学校做一个家庭作业的应用程序,我正在使用 Onesignal REST API,但我想将玩家 ID 保存在我的数据库中,以便在另一个应用程序(如服务器发件人)中使用它。
我的应用程序在intel xdk 中,我使用 Cordova 在 Android 上构建。
问题是我找不到任何获取玩家 ID 的示例。
有人能帮我解决这个问题吗?

我正在使用 JavaScript 谢谢。

这就是我在 .js 中的内容:

document.addEventListener('deviceready', function () {

  var notificationOpenedCallback = function(jsonData) {
    console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
  };

  window.plugins.OneSignal
    .startInit("XXXXXX-XXXX-XXX-XXXX-XXXXXXXXX") // <- api id
    .handleNotificationOpened(notificationOpenedCallback)
    .endInit();

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

    OneSignal.getUserId().then(function(userId) {
      console.log("OneSignal User ID:", userId);
    });
  });
}, false);
Run Code Online (Sandbox Code Playgroud)

Jul*_*zar 5

这是一个工作代码片段:

window.plugins.OneSignal
    .startInit("YOUR-APP-ID")
    .handleNotificationOpened(notificationOpenedCallback)
    .endInit();

window.plugins.OneSignal.getPermissionSubscriptionState(function(status) {
    idapp = status.subscriptionStatus.userId;
});
Run Code Online (Sandbox Code Playgroud)


Dav*_*edo 5

在 endInit() 方法之后添加以下代码块:

        window.plugins.OneSignal.getIds(function(ids) {
            // Player ID will be available at the object ids.userId
        });
Run Code Online (Sandbox Code Playgroud)

这是一个关于如何在警报中显示玩家 ID 的完整示例!

        document.addEventListener('deviceready', function () {

            // Enable to debug issues.
            // window.plugins.OneSignal.setLogLevel({logLevel: 4, visualLevel: 4});

            var notificationOpenedCallback = function(jsonData) {
                console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
            };

            window.plugins.OneSignal
                .startInit("YOUR_APP_ID_HERE")
                .handleNotificationOpened(notificationOpenedCallback)
                .endInit();

            window.plugins.OneSignal.getIds(function(ids) {
                alert("player id: " + ids.userId);
            });

        }, false);
Run Code Online (Sandbox Code Playgroud)

不要忘记将YOUR_APP_ID_HERE替换为您的真实应用 ID。


Var*_*ali 3

OneSignal 原型提供了一个函数getIds,可以提供当前设备的玩家 ID 和推送令牌。

window.plugins.OneSignal
    .startInit("XXXXXX-XXXX-XXX-XXXX-XXXXXXXXX") <- api id
    .getIds(function(userDetails) {
        console.log(userDetails.userId); // Player ID
        console.log(userDetails.pushToken);
    })
    .endInit();
Run Code Online (Sandbox Code Playgroud)

https://documentation.onesignal.com/docs/cordova-sdk#section--postnotification-