Подключение к существующей сессии¶
Начиная со сборки iOS SDK 2.6.76, поддерживается подключение к существующей websocket сессии на сервере для приема входящего SIP звонка при получении push-уведомления:
-
При создании сессии, установите опцию
keepAlive
- (FPWCSApi2Session *)connectWithOptions:(FPWCSApi2SessionOptions *)options { options.urlServer = _connectUrl.text; options.keepAlive = true; options.sipRegisterRequired = _sipRegRequired.control.isOn; options.sipLogin = _sipLogin.input.text; options.sipAuthenticationName = _sipAuthName.input.text; options.sipPassword = _sipPassword.input.text; options.sipDomain = _sipDomain.input.text; options.sipOutboundProxy = _sipOutboundProxy.input.text; options.sipPort = [NSNumber numberWithInteger: [_sipPort.input.text integerValue]]; options.appKey = @"defaultApp"; ... session = [FPWCSApi2 createSession:options error:&error]; ... [session connect]; return session; }
-
После успешной установки соединения, сохраните токен сессии
После этого сессия может быть разорвана на мобильном устройстве при уходе приложения в фон, но на сервере сохранится, по умолчанию, в течение 1 часа.[session on:kFPWCSSessionStatusEstablished callback:^(FPWCSApi2Session *rSession){ _authToken.input.text = [rSession getAuthToken]; [self changeConnectionStatus:[rSession getStatus]]; [self onConnected:rSession]; if (!_sipRegRequired.control.isOn) { [self changeViewState:_callButton enabled:YES]; } }];
-
При получении push уведомления, подключитесь к существующей сессии по токену
-
Получите сообщение о входящем звонке и создайте диалог для приема/отклонения вызова
[session onIncomingCallCallback:^(FPWCSApi2Call *rCall) { call = rCall; ... alert = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"Incoming call from '%@'", [rCall getCallee]] message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* answerButton = [UIAlertAction actionWithTitle:@"Answer" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [call answer]; }]; [alert addAction:answerButton]; UIAlertAction* hangupButton = [UIAlertAction actionWithTitle:@"Hangup" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [call hangup]; }]; [alert addAction:hangupButton]; [self presentViewController:alert animated:YES completion:nil]; }];
-
Примите входящий звонок