只需使用以下任一方案,将依赖项添加到您的项目中
您可以使用 CocoaPods 通过将其添加到您的 Podfile
中来安装 InStreamSDK
pod 'InStreamSDK', '~> 1.0.1'
您可以通过将以下 URL 添加到 Xcode 中的公共包仓库中,将 InStreamSDK
集成为 Swift 包
[email protected]:beappers/digiteka.instream.xcframework.git
然后在您的 ApplicationDelegate
类的 application(_:didFinishLaunchingWithOptions:)
中,添加以下代码以初始化 SDK
do {
try InStream.shared.initialize(config: DTKISConfig(apiKey: "01357940"))
} catch {
print("Can't init InStream with error \(error.localizedDescription)")
}
可选地,您可以为 SDK 获取日志设置一个自定义日志记录器。日志记录器必须实现 DTKISLoggerDelegate
协议
extension AppDelegate: DTKISLoggerDelegate {
func InStreamWarn(message: String) {
print("warn " + message)
}
func InStreamError(message: String, error: Error?) {
print("error " + message, error as Any)
}
}
然后将日志记录器传递
InStream.shared.setLoggerDelegate(self)
- mdtk (String) : api key
- debugMode (Boolean) : 可选
- zone (String) : 包含视频的网站的区域
- src (String) : 您想播放的视频 ID
- urlreferrer (String) : 桌面文章的 URL (URLreferrer)
- gdprconsentstring (String) : 用户同意字符串
- tagparam (String) : 可选的广告参数
- playMode (PlayMode): .user : 用户必须点击播放,.auto : 加载时自动播放,.scroll : 滚动 50% 以自动播放
- playerPosition (VisiblePlayerPosition) : 可见播放器的位置 (TOP_START, TOP_END, BOTTOM_START, BOTTOM_END)
- widthPercent (WidthProportion) : 播放器宽度相对于父视图的百分比
- ratio (Ratio) : 视频播放器宽高比
- horizontalMargin (CGFloat) : 可见播放器的边距
- verticalMargin (CGFloat) : 可见播放器的边距
通过调用创建一个 MainPlayerView
实例
var myMainPlayerView: MainPlayerView?
let myConfig: DTKISMainPlayerConfig = ... your config
do {
try myMainPlayerView = InStream.shared.initMainPlayerWith(config: myConfig)
} catch {
// it may throw an error if not initialized correctly
}
然后调用将它在 containerview (可以是UITableViewCell中的UIView,或只是一个 UIView) 中放置
myMainPlayerView?.setIn(containerView: myContainerView)
在您的 UIViewController 中,保留 MainPlayerView 的一个实例。然后使用此 UIScrollView 的扩展
extension MyViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let myMainPlayerView = myMainPlayerCell.myMainPlayerView {
myMainPlayerView.viewDidScroll(scrollView: scrollView)
}
}
}
在您的 UIViewController 中
var visiblePlayer: VisiblePlayer?
override func viewDidLoad() {
super.viewDidLoad()
let myConfig: DTKISVisiblePlayerConfig = ... your config
myVisiblePlayer = InStream.shared.initVisiblePlayerWith(config: myConfig, in: self.view, scrollView: scrollView)
}
extension MyViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let myMainPlayerCell = myMainPlayerCell, let myMainPlayerView = myMainPlayerCell.mainPlayerView {
visiblePlayer?.viewDidScroll(mainPlayerView: myMainPlayerView)
}
}
}
如果仅需要 MainPlayer 实例(带有 playMode = .auto 或 .user),则可以简单地调用
InStream.shared.initMainPlayerRepresentable(config: DTKISMainPlayerConfig)
它返回一个可用于滚动视图的 View
如果您计划使用其他功能,例如可见播放器或 playMode = .scroll,则必须使用 InStreamScrollVStack
,这是一个您可以添加内容的 ScrollView
InStreamScrollVStack(config: mainPlayerConfig, visiblePlayerConfig: visiblePlayerConfig, data: mockData, playerInsertPosition: 10) { element in
Text("element.id")
.fixedSize(horizontal: false, vertical: true)
}
如果没有需要可见播放器,可见播放器配置可以是 nil
类型 | 错误代码 | 级别 | 信息 | 原因 |
---|---|---|---|---|
配置 | DTKIS_CONF_3 | 错误 | InStream sdk 尚未初始化。请先调用 InStream.shared.initialize 。 |
InStream.shared.initialize 尚未调用 |