0

I am working on implementing the oovoo sdk in my sample application. The video transmission is working fine but the Delegate methods of the ooVooAVChatdelegate is not being called. I am not sure what is the issue. Any Help is appreciated.

Please find the below code snippet. Thanks!!!!

 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() {

}

}

Whenever a participant is joined, it should call didParticipantJoin but it is not calling any method of ooVooAVChatDelegate.

Please help!!!

Chika
  • 139
  • 1
  • 12

1 Answers1

0

Did you create a bridging header between the Objective-C libraries and Swift as shown here? https://github.com/eranmalovany/Documentation-1/blob/master/iOS%20Documentation/Swift%20Integration%20Guide.md

** Edit ** Here is the code I used and was able to trigger the didParticipantJoin delegate. When you run it, make sure to add your app token and verify the authorize and login steps are successful. I then ran the sample app included with the ooVoo sdk. When the sample app runs set a User Id and Display name, and login. From there, click "Room" enter "123456" as the Conference ID and click join. Wait a moment and the didParticipantJoin delegate should trigger in your app.

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!");
  }
}
BoulderEE
  • 44
  • 4
  • I created the bridging header and did all the necessary steps. Because I am able to access the videocontrollerdelegate but not oovooavchatdelegate. – Chika Oct 01 '16 at 20:31
  • In your join method you have included the code oovoopanel = ooVooVideoPanel.init(frame: self.view.frame) self.view.addSubview(oovoopanel) two times. Can you try commenting out the video window initialization in the actJoin() function and testing to see if the delegate is called? – BoulderEE Oct 01 '16 at 21:27
  • I tried that too. But still same thing. If it is possible can you help me with an example if it has worked for you . Because didparticipantjoin is not at all called . I am not sure why.. – Chika Oct 01 '16 at 22:28
  • It looks like the delegate method is not triggered when the first user joins, but is triggered when a new user joins. I ran the sample app that comes with the ooVoo sdk. didParticipantJoin wasn't called when I created and joined the conference. When I join the same conference by running your code, the delegate in the sample app is triggered. – BoulderEE Oct 02 '16 at 15:32
  • still I was unable to run the delegate method. Can you help me in explaining how did you follow the steps to invoke the delegate method of my application – Chika Oct 03 '16 at 17:25