【问题标题】:Accept Call between Android and iOS in QuickBlox在 QuickBlox 中接受 Android 和 iOS 之间的呼叫
【发布时间】:2015-11-24 10:24:21
【问题描述】:

我使用该框架在 Android 和 IOS 之间创建视频信使。 要做的事情:在 iOS 中创建会话并调用用户,使用 Android 设备进入。 但是在通话期间,在 android 上拨打电话之前 - android 应用程序崩溃了。

也许有人遇到过这种情况?或者我做错了什么?我不明白如何处理来电...(

我的 Android 设备代码

    onCreate(...){

    QBSettings.getInstance().fastConfigInit(APPLICATION_ID,AUTHORIZATION_KEY,AUTHORIZATION_SECRET);
        }

        public void createSessionButton(View view){

                //Log.d("Tag","onSuccess");

                QBAuth.createSession(currentUser,new QBEntityCallbackImpl<QBSession>() {

                    @Override
                    public void onSuccess(QBSession session, Bundle params) {

                        currentUser.setId(session.getUserId());

                        Log.d("Tag","call set id success");

                        QBChatService chatService;

                        if (!QBChatService.isInitialized()) {

                            Log.d("Tag","QBChatService do not initialize");

                            QBChatService.init(getApplicationContext());

                        }

                        chatService = QBChatService.getInstance();

                        Log.d("Tag","QBChatService initialize");

                        // LOG IN CHAT SERVICE
                        chatService.login(currentUser, new QBEntityCallbackImpl<QBUser>() {

                            @Override
                            public void onSuccess() {

                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {

                                        processTextView.setText("LOG IN CHAT SERVICE onSuccess");
                                    }
                                });

                                //processTextView.setText("LOG IN CHAT SERVICE onSuccess");

                                Log.d("Tag","LOG IN CHAT SERVICE onSuccess");

                            }

                            @Override
                            public void onError(List errors) {

                                Log.d("Tag","LOG IN CHAT SERVICE onError");

                            }
                        });

                    }

                    @Override
                    public void onError(List<String> errors) {

                        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                        builder.setTitle("Важное сообщение!")
                                .setMessage("onError")
                                        //.setIcon(R.drawable.ic_android_cat)
                                .setCancelable(false)
                                .setNegativeButton("ОК",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int id) {
                                                dialog.cancel();
                                            }
                                        });
                        AlertDialog alert = builder.create();
                        alert.show();
                    }
                });
            }

        public void createSignalingManager(View view) {
                QBChatService.getInstance().getVideoChatWebRTCSignalingManager().addSignalingManagerListener(new QBVideoChatSignalingManagerListener() {

                    @Override
                    public void signalingCreated(QBSignaling qbSignaling, boolean b) {
                        if (!b) {

    QBRTCClient.getInstance().addSignaling((QBWebRTCSignaling) qbSignaling);

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {

    processTextView.setText("addSignalingManagerListener");

                                }
                            });
                        }
                    }
                });

                // Add activity as callback to RTCClient
                QBRTCClient.getInstance().addSessionCallbacksListener(this);
                QBRTCClient.getInstance().addConnectionCallbacksListener(this);
                QBRTCClient.getInstance().addVideoTrackCallbacksListener(this);
                QBRTCClient.getInstance().prepareToProcessCalls(this);

            }

我在 iOS 中的代码

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


    [QBRTCClient.instance addDelegate:self];

    [[QBChat instance] addDelegate:self];


    [QBRTCConfig setDisconnectTimeInterval:10];

    self.callTestButton.hidden = YES;

}

#pragma mark - Action

- (IBAction)loginAction:(id)sender {


    QBUUser* currentUser = [[QBUUser alloc] init];

    currentUser.password = pass;

    currentUser.login = login;


    // connect to Chat
    [[QBChat instance] connectWithUser:currentUser completion:^(NSError * error) {

        NSLog(@"Error: %@", error);

    }];

    [QBRequest logInWithUserLogin:login password:pass successBlock:^(QBResponse *response, QBUUser *user) {

        NSLog(@"logInWithUserLogin:");

        [QBRequest usersWithSuccessBlock:^(QBResponse * response, QBGeneralResponsePage * page, NSArray * users) {

            NSLog(@"usersWithSuccessBlock:");

            self.callTestButton.hidden = NO;

        } errorBlock:^(QBResponse * response) {

        }];

    } errorBlock:^(QBResponse *response) {

        NSLog(@"error: %@", response.error);
    }];

}

- (IBAction)callAction:(UIButton *)sender {


    NSArray *opponentsIDs = [[NSArray alloc] initWithObjects:[NSNumber numberWithInteger:6919398], nil];

    NSLog(@"%ld", (long)[opponentsIDs[0] integerValue]);

    QBRTCSession* session = [QBRTCClient.instance createNewSessionWithOpponents:opponentsIDs
                                                             withConferenceType:QBRTCConferenceTypeAudio];
    session.localMediaStream.videoTrack.enabled = NO;

    if (session) {
        NSLog(@"new session");
    }

    NSDictionary *userInfo = @{@"startCall" : @"userInfo"};
    [session startCall:userInfo];


}

【问题讨论】:

    标签: java android ios objective-c quickblox


    【解决方案1】:

    请查看说明如何使用Quickblox SDK for videocalls 的文档并查看sample code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      相关资源
      最近更新 更多