ooVooAVChatDelegate не вызывается, когда участник присоединяется к swift
Я работаю над внедрением oovoo sdk в моем примере приложения. Передача видео работает нормально, но методы делегата ooVooAVChatdelegate не вызываются. Я не уверен, в чем проблема. Любая помощь приветствуется.
Пожалуйста, найдите приведенный ниже фрагмент кода. Спасибо!!!!
import UIKit
class ViewController: UIViewController,ooVooAVChatDelegate,ooVooVideoControllerDelegate,ooVooAudioControllerDelegate {
var oovoo:ooVooClient!
var avchat:ooVooAVChat!
var oovoopanel:ooVooVideoPanel!
var videorender:ooVooVideoRender!
@IBOutlet weak var VideoView: UIView!
@IBAction func Join(sender: UIButton) {
}
@IBOutlet weak var UserName: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
oovoo = ooVooClient.sharedInstance()
authorize()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func authorize()
{
oovoo.authorizeClient("App Token Here", completion: { (result:SdkResult!) -> Void in
let err :sdk_error!=result.Result;
if (err==sdk_error.OK)
{
NSLog("authorization ok");
self.login()
}
else
{
NSLog("fail autorization");
}
});
}
func login()
{
self.oovoo.Account.login("sample", completion: { (result:SdkResult!) -> Void in
if result.Result != sdk_error.OK
{
NSLog("login ok");
self.actJoin()
}
else
{
NSLog("login failed");
}
})
}
// oovooAVChat Delegate
func actJoin(){
oovoo = ooVooClient.sharedInstance()
oovoopanel = ooVooVideoPanel.init(frame: self.view.frame)
self.view.addSubview(oovoopanel)
self.oovoo.AVChat!.delegate=self;
self.oovoo.AVChat.VideoController.delegate = self;
self.oovoo.AVChat.VideoController.bindVideoRender(nil, render: oovoopanel);
self.oovoo.AVChat.VideoController.openCamera();
self.oovoo.AVChat.VideoController.startTransmitVideo()
self.oovoo.AVChat.join("1234", user_data: "bhavin");
}
func didParticipantJoin(participant: ooVooParticipant!, user_data: String!) {
print(participant.participantID)
self.oovoo.AVChat.VideoController.bindVideoRender(participant.participantID, render: oovoopanel)
self.oovoo.AVChat.VideoController.registerRemoteVideo(participant.participantID)
}
func didParticipantLeave(participant: ooVooParticipant!) {
}
func didConferenceStateChange(state: ooVooAVChatState, error code: sdk_error) {
if state == .Joined && code == sdk_error.OK
{
self.oovoo.AVChat.VideoController.openCamera()
}
self.oovoo.AVChat.AudioController.initAudio({ (result:SdkResult!) -> Void in
if result.Result == sdk_error.OK{
self.oovoo.AVChat.AudioController.setPlaybackMute(false)
}
})
print("conference state changed")
}
func didReceiveData(uid: String!, data: NSData!) {
}
func didConferenceError(code: sdk_error) {
print("conference error")
}
func didNetworkReliabilityChange(score: NSNumber!) {
}
func didSecurityState(is_secure: Bool) {
}
// ooVooVideoControllerDelegate
func didRemoteVideoStateChange(uid: String!, state: ooVooAVChatRemoteVideoState, width: Int32, height: Int32, error code: sdk_error) {
}
func didCameraStateChange(state: ooVooDeviceState, devId: String!, width: Int32, height: Int32, fps: Int32, error code: sdk_error) {
self.oovoo.AVChat.VideoController.openPreview()
self.oovoo.AVChat.VideoController.startTransmitVideo()
}
func didVideoTransmitStateChange(state: Bool, devId: String!, error code: sdk_error) {
self.navigationItem.rightBarButtonItem?.title = state ? "Leave" : "Join";
}
func didVideoPreviewStateChange(state: Bool, devId: String!, error code: sdk_error) {
print("VideoPreviewStateChange")
}
func didAudioTransmitStateChange(state: Bool, error code: sdk_error) {
}
func didAudioReceiveStateChange(state: Bool, error code: sdk_error) {
}
func didAudioHold() {
}
func didAudioUnHold() {
}
}
Всякий раз, когда участник присоединяется, он должен вызывать didParticipantJoin, но он не вызывает никакой метод ooVooAVChatDelegate.
Пожалуйста помоги!!!
1 ответ
Вы создали соединительный заголовок между библиотеками Objective-C и Swift, как показано здесь? https://github.com/eranmalovany/Documentation-1/blob/master/iOS%20Documentation/Swift%20Integration%20Guide.md
** Редактировать ** Вот код, который я использовал и смог вызвать делегат didParticipantJoin. Когда вы запустите его, обязательно добавьте свой токен приложения и убедитесь, что авторизация и вход в систему выполнены успешно. Затем я запустил пример приложения, включенного в ooVoo SDK. При запуске примера приложения установите идентификатор пользователя и отображаемое имя, а также войдите в систему. Затем нажмите "Комната", введите "123456" в качестве идентификатора конференции и нажмите "присоединиться". Подождите немного, и делегат didParticipantJoin должен сработать в вашем приложении.
import UIKit
class ViewController: UIViewController, ooVooAVChatDelegate, ooVooVideoControllerDelegate, ooVooAudioControllerDelegate {
var oovoo:ooVooClient!
var oovoopanel:ooVooVideoPanel!
var videorender:ooVooVideoRender!
@IBOutlet weak var VideoView: UIView!
@IBAction func Join(sender: UIButton) {
}
@IBOutlet weak var UserName: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.oovoo = ooVooClient.sharedInstance()
authorize()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func authorize()
{
oovoo.authorizeClient("Your App Token", completion: { (result:SdkResult!) -> Void in
let err :sdk_error!=result.Result;
if (err==sdk_error.OK)
{
NSLog("authorization ok");
self.login()
}
else
{
NSLog("fail autorization");
}
});
}
func login()
{
self.oovoo.Account.login("UserName", completion: { (result:SdkResult!) -> Void in
if result.Result == sdk_error.OK
{
NSLog("login ok");
self.actJoin()
}
else
{
NSLog("login failed");
}
})
}
func actJoin() {
oovoo = ooVooClient.sharedInstance()
oovoopanel = ooVooVideoPanel.init(frame: self.view.frame)
self.view.addSubview(oovoopanel)
self.oovoo.AVChat!.delegate=self;
self.oovoo.AVChat.VideoController.delegate = self;
self.oovoo.AVChat.VideoController.openCamera();
self.oovoo.AVChat.VideoController.startTransmitVideo()
self.oovoo.AVChat.join("123456", user_data: "UserId");
}
/**
* listener method is being called when audio unhold.
*/
func didAudioUnHold() {
}
/**
* listener method is being called when audio hold.
*/
func didAudioHold() {
}
/**
* listener method is being called when audio receive state was changed.
* @param state - new audio receive state (ON/OFF).
* @param errorCode - conference error code.
*/
func didAudioReceiveStateChange(state: Bool, error code: sdk_error) {
}
/**
* listener method is being called when audio transmit state was changed.
* @param state - new audio transmit state (ON/OFF).
* @param errorCode - conference error code.
*/
func didAudioTransmitStateChange(state: Bool, error code: sdk_error) {
}
/**
* listener method is being called when preview video state was changed.
* @param state - new preview video state (ON/OFF).
* @param errorCode - conference error code.
*/
func didVideoPreviewStateChange(state: Bool, devId: String!, error code: sdk_error) {
}
/**
* listener method is being called when video transmit state was changed.
* @param state - new video transmit state (ON/OFF).
* @param errorCode - conference error code.
*/
func didVideoTransmitStateChange(state: Bool, devId: String!, error code: sdk_error) {
}
/**
* listener method is being called when camera state was changed.
* @param state - new camera state .
* @param errorCode - conference error code.
*/
func didCameraStateChange(state: ooVooDeviceState, devId: String!, width: Int32, height: Int32, fps: Int32, error code: sdk_error) {
self.oovoo.AVChat.VideoController.openPreview()
self.oovoo.AVChat.VideoController.startTransmitVideo()
}
/**
* listener method is being called when remote video state has changed.
* @param uid -user id of remote video.
* @param state - new remote video state.
* @param width - picture width.
* @param height - picture height.
* @param errorCode - conference error code.
*/
func didRemoteVideoStateChange(uid: String!, state: ooVooAVChatRemoteVideoState, width: Int32, height: Int32, error code: sdk_error) {
}
/**
* listener method which indicates if user is in secure mode.
* @param score - true for secured otherwise false.
*/
func didSecurityState(is_secure: Bool) {
}
/**
* listener method is being called when network reilability change.
* @param score - a number from 1 - 4 1 indicate that network is worse 4 network is best.
*/
func didNetworkReliabilityChange(score: NSNumber!) {
}
/**
* listener method is being called when conference error is received.
* @param errorCode - conference error code.
*/
func didConferenceError(code: sdk_error) {
}
/**
* listener method is being called when message is received.
* @param uid -user id of remote video.
* @param buffer - data which contains the message.
* @param size - buffer size.
*/
internal func didReceiveData(uid: String!, data: NSData!) {
}
/**
* listener method is being called when conference state has changed.
* @param state - new conference state.
* @param errorCode - conference error code.
*/
func didConferenceStateChange(state: ooVooAVChatState, error code: sdk_error) {
if state == .Joined && code == sdk_error.OK
{
self.oovoo.AVChat.VideoController.openCamera()
}
self.oovoo.AVChat.AudioController.initAudio({ (result:SdkResult!) -> Void in
if result.Result == sdk_error.OK{
self.oovoo.AVChat.AudioController.setPlaybackMute(false)
}
})
print("conference state changed")
}
/**
* listener method is being called when new participant left conference.
* @param uid - user id of participant.
*/
func didParticipantLeave(participant: ooVooParticipant!) {
}
/**
* listener method is being called when new participant joined conference.
* @param uid - user id of new participant.
* @param userData - user data.
*/
func didParticipantJoin(participant: ooVooParticipant!, user_data: String!) {
NSLog("Participant Joined!");
}
}