当参与者加入swift

时间:2016-10-01 16:34:20

标签: ios swift oovoo

我正在我的示例应用程序中实现oovoo sdk。视频传输工作正常,但没有调用ooVooAVChatdelegate的Delegate方法。我不确定是什么问题。任何帮助表示赞赏。

请查看以下代码段。感谢!!!!

 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 个答案:

答案 0 :(得分:0)

你是否在Objective-C库和Swift之间创建了一个桥接头,如下所示? https://github.com/eranmalovany/Documentation-1/blob/master/iOS%20Documentation/Swift%20Integration%20Guide.md

**编辑** 这是我使用的代码,并且能够触发didParticipantJoin委托。运行它时,请确保添加您的应用令牌并验证授权和登录步骤是否成功。然后我运行了ooVoo sdk附带的示例应用程序。示例应用程序运行时设置用户ID和显示名称,然后登录。从那里,单击“房间”输入“123456”作为会议ID,然后单击加入。等一下,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!");
  }
}