【问题标题】:Quickblox JS SDK notifyOccupants on dialog creationQuickblox JS SDK notifyOccupants 创建对话框
【发布时间】:2016-07-19 13:05:40
【问题描述】:

我使用此代码从http://quickblox.com/developers/Javascript 检索。

我的 SDK 信息:/* QuickBlox JavaScript SDK - v2.1.4 - 2016-07-19 */

function notifyOccupants(dialogOccupants, newDialogId) {
  dialogOccupants.forEach(function(itemOccupanId, i, arr) {
    if (itemOccupanId != currentUser.id) {
      var msg = {
        type: 'chat',
        extension: {
          notification_type: 1,
          _id: newDialogId,
        }, 
      };
      QB.chat.send(itemOccupanId, msg);
    }
  });
}

当我执行这个函数时,它总是返回:

"quickblox.min.js:7 Uncaught TypeError: Cannot read property 'send' of undefined".

有人可以帮忙吗?

【问题讨论】:

    标签: javascript sdk quickblox


    【解决方案1】:

    正如他们的tutorial 所说, 您必须先初始化 QB 对象才能使用它。

    确保您的代码中有以下行:

    QB.createSession({login: user.login, password: user.pass}, function(err, res) {
      if (res) {
        QB.chat.connect({userId: user.id, password: user.pass}, function(err, roster) {
    

    并检查您的代码是否在 connect 函数回调中, 确保您的代码仅在 QB 初始化后运行。

    【讨论】:

    • 我使用这个 QB.init(data.token, quickblox.appId) 初始化了 quickblox,我在我的服务器中创建了 quickblox 用户会话,并确保存在一个会话。在我调用成功后创建一个新对话框。
    【解决方案2】:

    我的代码:

    var usersIds = [];
    usersIds.push(user);
    
    var params = {
        type: 3,
        occupants_ids: usersIds
    };
    
    console.log("Creating a dialog with params: " + JSON.stringify(params));
    
    QB.chat.dialog.create(params, function (err, createdDialog) {
        if (err) {
            console.log(err);
            errorCallback();
        } else {
            console.log("Dialog " + createdDialog._id + " created with users: " + usersIds);
    
            // save dialog to local storage
            var dialogId = createdDialog._id;
            QuickbloxConfig.dialogs[dialogId] = createdDialog;
    
            QuickbloxConfig.currentDialog = createdDialog;
    //
    //                    self.joinToNewDialogAndShow(createdDialog);
    
            self.notifyOccupants(createdDialog.occupants_ids, createdDialog._id, 1);
    
            //self.triggerDialog(createdDialog._id);
    
            successCallback();
    
        }
    });
    

    只有在我调用 self.notifyOccupants(createdDialog.occupants_ids, createdDialog._id, 1); 时才会失败

    【讨论】:

    • 你在哪里设置self
    • 我的应用在 angularjs 上,我创建了一个服务,我使用 var self = this;访问服务中的其他功能。
    • 您确定QB.chat.connect 已经完成且没有错误吗?
    • 我的步骤: - QB.init(token, quickblox.appId);如果我用令牌初始化,我有这个“QB.chat.connect({userId: user.id, password: user.pass}, function (err, roster)”调用?我试试这个,但我收到:angular。 js:11270 TypeError: 无法读取未定义的属性“连接”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多