Java 在QuickBlox中接受Android和iOS之间的呼叫
我使用这个框架在Android和IOS之间创建了一个视频信使。 待办事项:在iOS中创建会话并调用用户,用户通过Android设备进入。 但在通话过程中,在对android进行通话之前,android应用程序崩溃 也许有人面对这样的问题?或者我做错了什么?我不知道如何处理来电。。。( 我的Android设备代码Java 在QuickBlox中接受Android和iOS之间的呼叫,java,android,ios,objective-c,quickblox,Java,Android,Ios,Objective C,Quickblox,我使用这个框架在Android和IOS之间创建了一个视频信使。 待办事项:在iOS中创建会话并调用用户,用户通过Android设备进入。 但在通话过程中,在对android进行通话之前,android应用程序崩溃 也许有人面对这样的问题?或者我做错了什么?我不知道如何处理来电。。。( 我的Android设备代码 onCreate(...){ QBSettings.getInstance().fastConfigInit(APPLICATION_ID,AUTHORIZATION_
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);
}
请检查说明如何使用的文档,并检查请检查说明如何使用的文档,并检查
- (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];
}