我正在为学校的家庭作业做一个应用程序,我正在使用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);
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();
https://documentation.onesignal.com/docs/cordova-sdk#section--postnotification-
这是一个有效的代码片段:
window.plugins.OneSignal
.startInit("YOUR-APP-ID")
.handleNotificationOpened(notificationOpenedCallback)
.endInit();
window.plugins.OneSignal.getPermissionSubscriptionState(function(status) {
idapp = status.subscriptionStatus.userId;
});
在endInit()方法之后添加这段代码:
window.plugins.OneSignal.getIds(function(ids) {
// Player ID will be available at the object ids.userId
});
以下是如何在警报中显示玩家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);
不要忘记用真实的应用ID替换YOUR_APP_ID_HERE。