【发布时间】: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