文章目录
- 1.官方文档
- 2.github地址
- 3.具体操作(本人已调试成功,并成功集成到项目里)
-
- [3.1 下载官方demo,并且按官方文档的步骤来,跑通demo,在demo中可以正常直播](#3.1 下载官方demo,并且按官方文档的步骤来,跑通demo,在demo中可以正常直播)
- [3.2 看懂demo里的代码后,将demo里的代码移植到自己的项目里](#3.2 看懂demo里的代码后,将demo里的代码移植到自己的项目里)
1.官方文档
2.github地址
Amazon Kinesis Video iOS WebRTC Sample - github
3.具体操作(本人已调试成功,并成功集成到项目里)
3.1 下载官方demo,并且按官方文档的步骤来,跑通demo,在demo中可以正常直播
- 注意
- demo需要注册,登录,登录成功后再点击直播
3.2 看懂demo里的代码后,将demo里的代码移植到自己的项目里
- 如下,可以将demo里的Podfile文件直接拷贝到自己项目的Podfile文件里
swift
# Uncomment the next line to define a global platform for your project
platform :ios, '13.0'
target 'XXX' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for XXX
pod 'SnapKit'
pod 'Moya'
pod 'IQKeyboardManagerSwift'
pod 'SmartCodable'
# pod 'XHToastSwift'
# AWS
pod 'AWSCognitoIdentityProvider'
pod 'AWSMobileClient'
pod 'CommonCryptoModule'
pod 'AWSKinesisVideo'
pod 'AWSKinesisVideoSignaling'
pod 'GoogleWebRTC', '~> 1.1'
pod 'Starscream', '~> 3.0'
end
# AWS
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
end
end
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = $iOSVersion
end
end
- 如下,是demo能正常直播时的打印log,我选的是Connect as Viewer
swift
经过:signalClientDidConnect(_:)
经过:present(self.vc
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Received remote candidate from []
经过:Received remote sdp from []
经过:WebRTC checking state
经过:Generated local candidate
经过:Generated local candidate
经过:Setting remote sdp and sending answer.
经过:Received remote candidate from []
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:WebRTC connected/completed state
- 需要signalClientDidConnect后再加载直播界面,所以下面的代码中要等2秒
swift
// Create the video view
let seconds = 2.0
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
self.updateConnectionLabel()
self.vc = VideoViewController(webRTCClient: self.webRTCClient!, signalingClient: self.signalingClient!, localSenderClientID: self.localSenderId, isMaster: self.isMaster, mediaServerEndPoint: endpoints["WEBRTC"] ?? nil)
print("经过:present(self.vc")
self.present(self.vc!, animated: true, completion: nil)
}
swift
extension ChannelConfigurationViewController: SignalClientDelegate {
func signalClientDidConnect(_: SignalingClient) {
signalingConnected = true
print("经过:\(#function)")
}
- 在我自己的项目里我没有等2秒,直接连上后再加载直播界面
swift
extension VideoVC: SignalClientDelegate {
func signalClientDidConnect(_: SignalingClient) {
MyPrint("经过:\(#function)")
signalingConnected = true
//必须要连接上后再加载视频
loadVideoView()
}