UICollectionView 将包含视频提要。当用户内联视频时,我希望它播放。使用我当前的设置,一旦加载到集合视图中,就会同时播放几个视频(我想取决于分页)。
如何在 UICollectionView 中内嵌播放视频?
UICollectionView 提要中的一个单元格将包含一个 UIView,它将容纳视频播放器。这是 UIView 的类PlayerViewClass:
import Foundation
import UIKit
import AVKit
import AVFoundation
class PlayerViewClass: UIView {
override static var layerClass: AnyClass {
return AVPlayerLayer.self
}
var playerLayer: AVPlayerLayer {
return layer as! AVPlayerLayer
}
var player: AVPlayer? {
get {
return playerLayer.player
}
set {
playerLayer.player = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
在饲料的的CollectionView cellForItemAt indexPath委托方法FeedViewController如下:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = …Run Code Online (Sandbox Code Playgroud) 我正在按照 Agora.io频道管理指南使用 AgoraRtcEngineKit for iOS 加入频道。它指出我应该调用createRtcChannelAgoraRtcEngineKit 类来创建一个AgoraRtcChannel带有通道 ID的对象。但是,AgoraRtcEngineKitcreateRtcChannel在 Swift中没有方法。另一种选择是我使用 Obj-C 代码,但这似乎有点 hacky。
其次,按照令牌生成参考,我需要使用 RtcTokenBuilder 生成服务器令牌。它指出“您的令牌需要在您自己的服务器上生成,因此您需要先在服务器上部署一个令牌生成器。” 理想情况下,我将能够在 Swift 中生成令牌,但源代码唯一可用的语言是 C++、Java、Python、PHP、Node.js、Go、Ruby。我想我可以用 JavaScriptCore 做到这一点,但是,就像频道生成一样,这似乎不是一个最佳解决方案。
根据文档:
生成令牌(或临时令牌)后,客户端应在24小时内使用令牌加入频道。否则,您需要生成一个新的令牌(或临时令牌)。
令牌(或临时令牌)在一段时间后到期。当SDK通过onTokenPrivilegeWillExpire或onTokenExpired回调通知客户端token即将过期或已经过期时,需要生成新的token并调用renewToken方法。
令牌编码使用标准的 HMAC/SHA1 方法,这些库可在常见的服务器端开发平台上使用,例如 Node.js、Java、PHP、Python 和 C++。
通过 Agora.io 在 iOS Swift 中使用 AgoraRtcEngineKit 生成频道和令牌以加入频道的标准方法是什么?
提前致谢!