使用oneSignal将PlayerId添加到Meteor.user

时间:2016-12-10 17:19:46

标签: cordova meteor meteor-accounts onesignal

我正在尝试使用one 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用户,因为它还没有登录。

1 个答案:

答案 0 :(得分:1)

终于得到了答案,这很简单。  首先是作为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方法

Meteor.methods({
  addPlayerId: function(playerId) {
    return Meteor.users.update({
      _id: Meteor.userId()
    }, {
      $set: {
        playerId: playerId
      }
    });
  }
});

最后这一部分。

  Accounts.onLogin(function() {
    Meteor.call('addPlayerId', userVar.get())
  });