使用 oneSignal 将 PlayerId 添加到 Meteor.user
Add PlayerId to Meteor.user using oneSignal
我正在尝试使用 one Signal 在我的用户下订单以及订单更改时向他们发送推送通知。如何将一个 Signal 的玩家 ID 关联到 Meteor 用户?
所以我可以使用下面的 Meteor 方法?
Meteor.methods({
finishOrder: function(id) {
var data;
var PlayerId = Meteor.users.findOne({_id:id}).playerId
data = {
contents: {
en: 'We are reviewing the order'
}
};
return OneSignal.Notifications.create([PlayerId], data);
}
});
我觉得跟
有关系
window.plugins.OneSignal.getIds(function(ids) {
console.log('getIds: ' + JSON.stringify(ids));
alert("userId = " + ids.userId + ", pushToken = " + ids.pushToken);
});
var userVar = new ReactiveVar(null);
if (Meteor.isCordova) {
document.addEventListener('deviceready', function () {
window.plugins.OneSignal.setLogLevel({logLevel: 6, visualLevel: 4});
window.plugins.OneSignal
.startInit('------')
.getIds(function(ids) {
userVar.set(ids.userId)
.endInit();
}, false);
});
Accounts.onLogin(function() {
return window.plugins.OneSignal.getIds(function(ids) {
return Meteor.users.update({
_id: Meteor.userId()
}, {
$set: {
playerId: userVar.get()
}
});
});
});
}
但我无法让它工作。因为它 运行 并且不会获得 Meteor 用户,因为它还没有登录。
终于找到答案了,很简单。
首先像 cordova 一样流星,并使用反应性变量将玩家 ID 分配给 userVar(反应性变量)
var userVar = new ReactiveVar(null);
if (Meteor.isCordova) {
document.addEventListener('deviceready', function () {
window.plugins.OneSignal.setLogLevel({logLevel: 5, visualLevel: 4});
window.plugins.OneSignal.startInit('-------')
window.plugins.OneSignal.getIds(function(ids) {
userVar.set(ids.userId);
});
window.plugins.OneSignal.endInit();
}, false);
Accounts.onLogin(function() {
Meteor.call('addPlayerId', userVar.get())
});
}
然后使用在服务器中建立的流星方法
Meteor.methods({
addPlayerId: function(playerId) {
return Meteor.users.update({
_id: Meteor.userId()
}, {
$set: {
playerId: playerId
}
});
}
});
最后这一部分。
Accounts.onLogin(function() {
Meteor.call('addPlayerId', userVar.get())
});
我正在尝试使用 one Signal 在我的用户下订单以及订单更改时向他们发送推送通知。如何将一个 Signal 的玩家 ID 关联到 Meteor 用户?
所以我可以使用下面的 Meteor 方法?
Meteor.methods({
finishOrder: function(id) {
var data;
var PlayerId = Meteor.users.findOne({_id:id}).playerId
data = {
contents: {
en: 'We are reviewing the order'
}
};
return OneSignal.Notifications.create([PlayerId], data);
}
});
我觉得跟
有关系window.plugins.OneSignal.getIds(function(ids) {
console.log('getIds: ' + JSON.stringify(ids));
alert("userId = " + ids.userId + ", pushToken = " + ids.pushToken);
});
var userVar = new ReactiveVar(null);
if (Meteor.isCordova) {
document.addEventListener('deviceready', function () {
window.plugins.OneSignal.setLogLevel({logLevel: 6, visualLevel: 4});
window.plugins.OneSignal
.startInit('------')
.getIds(function(ids) {
userVar.set(ids.userId)
.endInit();
}, false);
});
Accounts.onLogin(function() {
return window.plugins.OneSignal.getIds(function(ids) {
return Meteor.users.update({
_id: Meteor.userId()
}, {
$set: {
playerId: userVar.get()
}
});
});
});
}
但我无法让它工作。因为它 运行 并且不会获得 Meteor 用户,因为它还没有登录。
终于找到答案了,很简单。 首先像 cordova 一样流星,并使用反应性变量将玩家 ID 分配给 userVar(反应性变量)
var userVar = new ReactiveVar(null);
if (Meteor.isCordova) {
document.addEventListener('deviceready', function () {
window.plugins.OneSignal.setLogLevel({logLevel: 5, visualLevel: 4});
window.plugins.OneSignal.startInit('-------')
window.plugins.OneSignal.getIds(function(ids) {
userVar.set(ids.userId);
});
window.plugins.OneSignal.endInit();
}, false);
Accounts.onLogin(function() {
Meteor.call('addPlayerId', userVar.get())
});
}
然后使用在服务器中建立的流星方法
Meteor.methods({
addPlayerId: function(playerId) {
return Meteor.users.update({
_id: Meteor.userId()
}, {
$set: {
playerId: playerId
}
});
}
});
最后这一部分。
Accounts.onLogin(function() {
Meteor.call('addPlayerId', userVar.get())
});