Quickblox JS SDK notifyOccupants 创建对话框

Posted

技术标签:

【中文标题】Quickblox JS SDK notifyOccupants 创建对话框【英文标题】:Quickblox JS SDK notifyOccupants on dialog creation 【发布时间】: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".

有人可以帮忙吗?

【问题讨论】:

【参考方案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: 无法读取未定义的属性“连接”

以上是关于Quickblox JS SDK notifyOccupants 创建对话框的主要内容,如果未能解决你的问题,请参考以下文章

无法解决:com.quickblox:quickblox-android-sdk-chat:2.6.1

QBRoomChatManager 类在以后的 Quickblox 库中不存在 - quickblox-sdk-release-2

Quickblox 登录无法使用 3.3.1 sdk

使用 QuickBlox JavaScript SDK 的问题

如何管理 quickblox 会话 Javascript SDK

使用 QuickBlox 聊天 SDK 发送图像 - Android