WherebySDK 0.15.0

WherebySDK 0.15.0

Yuriy PavlyshakRemi QuintoWhereby Ops 维护。



WherebySDK 0.15.0

Whereby嵌入式iOS SDK

此仓库包含 Whereby SDK 框架及其依赖项的发行文件。

注意,这是该框架的beta版本。对于任何评论、建议或问题,请通过我们的客户支持联系:[email protected].

其他平台

先决条件

Whereby SDK 支持 iOS 14.0 作为最低部署目标。

安装

使用 Swift 包管理器

  1. 在 Xcode 中打开您的项目,然后选择文件 > 添加包...

  2. 在“搜索”或“输入包 URL”文本框中,输入存储库 URL

    https://github.com/whereby/ios-sdk.git
    
  3. 单击“添加包”。

  4. 在“选择包产品”窗口中,保留 WherebySDK 产品选中状态,然后单击“添加包”。

有关更多详细信息,请参阅添加包依赖项到您的应用

使用 CocoaPods

  1. 将以下行添加到您的项目 Podfile 中

    pod 'WherebySDK'
    

    您的 Podfile 应该看起来像这样

    platform :ios, '14.0'
    
    target 'TargetName' do
    use_frameworks!
    pod 'WherebySDK'
    end
    
  2. 在终端中,导航到包含您的 Podfile 的目录,然后执行

    pod install
    

手动安装

我们建议使用 Swift 包管理器或 CocoaPods 来安装 Whereby SDK。或者,也可以手动将 SDK 添加到项目中

  1. 克隆此存储库

    git clone https://github.com/whereby/ios-sdk.git
    
  2. WherebySDK.xcframeworkWebRTC.xcframeworkmediasoup_client_ios.xcframework 从存储库复制到与您的 .xcodeproj 文件相邻的项目目录中

  3. 在 Xcode 中,选择您的项目文件,然后选择您的应用程序目标。在目标设置中选择“通用”选项卡。将新复制的 WherebySDK.xcframeworkWebRTC.xcframeworkmediasoup_client_ios.xcframework 框架拖到您的目标中“框架、库和嵌入式内容”部分。

项目设置

添加Whereby SDK后,按照以下步骤设置您的项目

  1. 添加摄像头和麦克风的使用说明。这两个说明都是面向用户的消息,将显示在您的应用中的标准系统权限提示中。您可以提供自己的消息,更好地描述您应用的目的。在您的应用的Info.plist中添加以下键和值

    隐私 - 摄像头使用描述 (NSCameraUsageDescription): 允许摄像头访问,以便其他人在会议中看到您。

    隐私 - 麦克风使用描述 (NSMicrophoneUsageDescription): 允许麦克风访问,以便其他人在会议中听到您。

    更多详情请参阅在iOS上请求媒体捕获权限(注意:您不需要在代码中使用AVCaptureDevice API,这是由Whereby SDK执行的)。

  2. 添加音频和VoIP后台执行模式。在Xcode中选择您的项目文件,然后选择您的应用目标。在目标设置中,选择“签名与能力”选项卡。通过点击左上角的多加号按钮添加“后台模式”能力。添加能力后,在“后台模式”部分通过复选框选择以下值

    • 音频、AirPlay、画中画
    • VoIP

    更多详情请参阅配置后台执行模式

  3. 禁用bitcode。Whereby SDK不支持bitcode,并且一般已在Xcode 14(目前处于beta版本)中弃用(请参阅Apple Clang Compiler
    《Xcode 14发布说明》中的弃用部分Xcode 14发布说明)。如果您的应用目标启用了bitcode,则需要禁用它。在Xcode中选择您的项目文件和您的应用目标。在目标设置中,选择“构建设置”选项卡。搜索“启用bitcode”设置(ENABLE_BITCODE),并将其值设置为“不”。

使用

要查看SDK使用的完整示例,请尝试我们的演示应用

WherebyRoomViewController是SDK的主要元素。它是UIViewController的一个子类,它提供了Whereby房间的用户界面以及与房间交互的API。按照以下步骤将Whereby房间添加到您的应用

  1. 在您的文件顶部导入WherebySDK(通常这会在您的UIViewController子类中)

    import WherebySDK
  2. 提供房间URL。房间URL通常由您的后端使用Whereby API创建。有关详细信息,请参阅创建和删除房间

    let roomUrl = URL(string: "https://...")!
  3. 创建一个WherebyRoomConfig

    let roomConfig = WherebyRoomConfig(url: roomUrl)

    可选:设置配置参数以自定义房间

    roomConfig.mediaMode = .audioOnly
  4. 创建一个WherebyRoomViewController。如果您打算将房间查看控制器推送到您应用的现有UINavigationController中,则传递isPushedInNavigationController: true。否则,传递isPushedInNavigationController: false

    let roomViewController = WherebyRoomViewController(config: roomConfig, isPushedInNavigationController: false)
    // Set the delegate to be able to receive the room callback events: 
    roomViewController.delegate = self
  5. 使用方法之一在您的应用中显示房间查看控制器

    • 将房间查看控制器嵌入为应用UI的一部分,通过将其添加为子查看控制器。有关详细信息,请参阅创建自定义容器查看控制器

      // Add the room view controller as a child of this view controller
      addChild(roomViewController)
      view.addSubview(roomViewController.view)
      
      // Set up the auto layout constraints for the room view controller’s view.
      roomViewController.view.translatesAutoresizingMaskIntoConstraints = false
      NSLayoutConstraint.activate([
          roomViewController.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8),
          roomViewController.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -8),
          roomViewController.view.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 16),
          roomViewController.view.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -16)
      ])
      
      // Notify the room view controller that the move is complete.
      roomViewController.didMove(toParent: self)
    • 另一种选择是将房间查看控制器推送到应用的现有导航堆栈

      navigationController!.pushViewController(roomViewController, animated: true)
  6. 加入房间

    roomViewController.join()
  7. 实现WherebyRoomViewControllerDelegate以处理房间回调

    func roomViewControllerDidLeave(_ roomViewController: WherebyRoomViewController) {
        // Handle room leave, for example, remove WherebyRoomViewController 
        // from parent view controller if it was previously added as a child
        roomViewController.willMove(toParent: nil)
        roomViewController.view.removeFromSuperview()
        roomViewController.removeFromParent()
    
        // Or pop it from the navigation stack if it was pushed
        // navigationController!.popViewController(animated: true)
    }
  8. 可选:设置媒体(麦克风和相机)切换按钮。例如

        @IBAction func toggleMicrophoneButtonPressed(_ sender: UIButton) {
            guard let roomViewController = roomViewController else { return }
            roomViewController.isMicrophoneEnabled = !roomViewController.isMicrophoneEnabled
    }

备注

  • iOS模拟器没有相机支持。我们建议在真实设备上测试房间集成。但是,在模拟器上使用Whereby SDK运行应用也是可能的。
  • 在运行在搭载Apple Silicon CPU的Mac电脑上的模拟器时,SDK在渲染房间中超过一个远程视频视图中可能会崩溃。此问题仅存在于模拟器中。作为解决方案,在真实设备上运行应用,或者打开Xcode使用Rosetta,然后在模拟器上运行您的应用。
  • Whereby SDK使用CallKit框架。当将您的应用提交到App Store时,苹果可能要求对中国用户禁用CallKit。此问题已由SDK处理,不需要在您的应用中进行任何其他配置。在提交您的应用时,您可能需要在App Store Connect的“应用审查信息”部分提供备注,例如对中国用户禁用CallKit功能。Whereby会议室用户在中国仍然可以工作,但没有由CallKit提供更深层系统集成的支持。

免责声明

Whereby发布这些包以帮助开发社区了解Whereby嵌入式产品的实现方式。

在没有以前评估和针对生产设置的相关测试(可能涉及操作、技术、安全或法律(例如库许可证评估)性质)的情况下,Whereby不建议在生产环境中使用此类示例。您明确同意,使用这些包的风险由您自行承担。

其中,其关联公司、供应商或许可方,不论明示或默示,对以下示例、信息、内容、材料等均不做任何表述、保证、合同承诺、条件或保证。