Quickblox管理会话和召回?

时间:2015-01-06 06:45:26

标签: android quickblox

我正在使用QuickBlox库进行视频聊天。我该如何管理它?因为当我从实时聊天活动转到下一个活动时,我刚刚丢失了会话,因为它说“聊天无法初始化”然后我必须再次创建会话来进行呼叫。那么quickblox会话的生命周期是什么,我该如何管理呢?

我也面临着在停止呼叫或转移到下一个活动时回忆的问题,并试图回想起我无法做到这一点实际上我尝试了不同的事情所以每次我得到不同的错误。因此,如果任何人有QuickBlox库的经验需要帮助。

当我停止通话时,我会调用此功能。

private void stopCall() {

        //Toggle view show the smile view again

        //ToggleSmileView();

        try
        {
            cancelCallTimer();

            if (videoChat != null) {
                videoChat.stopCall();
                videoChat = null;
            }
            if (videoChannel != null) {
                videoChannel.close();
                videoChannel = null;
            }

            sessionId = null;
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }

当我拨打电话时,我会调用此功能

 private void call() {

    //toggle view 
    //ToggleSmileView();

    // get opponent
    //
    VideoChatApplication app = (VideoChatApplication)getApplication();
    opponent = new QBUser();
    opponent.setId((app.getCurrentUser().getId() == VideoChatApplication.FIRST_USER_ID ? VideoChatApplication.SECOND_USER_ID : VideoChatApplication.FIRST_USER_ID));

    // call
    //
    callTimer = new Timer();
    callTimer.schedule(new CancelCallTimerTask(), 30 * 1000);

    createSenderChannel();
    initVideoChat();

    if (videoChat != null) 
    {
        videoChat.call(opponent, getCallType(), 3000);
        //toggleMicrophoneMute();
    } 
    else 
    {
        logAndToast("Stop current chat before call");
    }
}

1 个答案:

答案 0 :(得分:4)

对于: quickblox会话的生命周期以及如何管理它。

  

要验证您的应用程序,您必须设置有效的auth_key和   使用您的应用程序auth_secret生成签名并接收   您应该用来向QuickBlox API发送请求的会话令牌

而且,

  

令牌的到期时间为2小时。请注意它。如果   您将使用过期令牌执行查询 - 您将收到错误   必需的会话不存在。

来源:Authentication and Authorization Session Info

该部分符合创建会话的Android示例代码

QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
    @Override
     public void onSuccess(QBSession session, Bundle params) {
        Log.i(TAG, "session created, token = " + session.getToken());
     }
     @Override
     public void onError(List<String> errors) {

     }
});

来源:Android developers documentation

我使用过Android SDK,觉得还需要一些工作,尤其是要达到相当于iOS SDK和REST API的阶段。

虽然查看了您的代码,但在创建新的getToken()和相关的视频聊天通话之前,您应该使用QBUser,如果令牌已过期,只需创建一个新的。 我已经实现了类似的代码,而不是视频聊天应用程序,但是一般来说,如果需要重新创建会话,则在会话创建的onSuccess()中编写函数。

Fyi,对于多个,您可以尝试使用已经给出的摘要检查错误,分类为4; ..developers/Errors