Antourage Widget SDK
功能描述
Antourage Widget 设计成为主机应用中的独立“小部件”。它显示由我们移动广播应用捕获的实时直播和点播视频。Antourage 以移动优先,旨在创建和查看实时和准实时的小型内容。
磁力按钮
用户入口是在主机应用主屏幕上显示的磁力按钮。
当视频正在直播时,按钮状态会变化,并显示直播的标题和主播的名称。如果用户在此时刻点击按钮,他们将被直接带到直播。
如果没有视频正在直播,按钮将显示观众尚未观看的点播视频数量。如果他们在此时刻点击按钮,他们将转到主视图。
观看直播
视频播放器可以使用横屏或竖屏模式。在这两种模式下,观众可以观看广播、看到并参与评论以及看到并对民意调查做出回应。
点播视频
当用户点击视频时,视频从头开始播放,或者如果该视频已经被部分观看,它会从观众最后观看的点开始播放。Antourage小部件会追踪用户看了哪些视频,并根据磁按钮上的数值相应更新。
每个视频都会显示视频名称、主播名称、总时长和观看总数。
显示名称
为了在评论中发表意见,用户必须在我们系统中有一个身份,以及一个在评论流中显示的显示名称。由于并非所有主机应用程序都要求用户名,我们要求用户在首次尝试聊天时创建一个显示名称。如果主机应用程序确实要求用户创建用户名,我们可以关闭此功能。
评论
只有直播的观众可以发表评论。当视频被后续观看时,这些评论可能会显示,但无法添加。主播有权审查视频上的评论并删除他们认为不可接受的评论。Antourage管理员也有此权限。
民意调查
民意调查由主播创建,在直播期间发布。它们在首次推向观众时出现在屏幕上,观众可以做出回应或简单地关闭民意调查(如果他们不想回答)。如果他们回答了,就会立即显示结果,并且他们可以随着结果的到来查看更新的结果。
内容精选
只有被我们的客户主动选中的内容创建者才能创建内容,并且传播者可以随时从视图中移除自己的内容。每位客户为其内容的存储和展示指定一个时间段,通常是2周至6周。在存储期结束后,内容将自动被移除。这三个元素——主动选定的创作者、视频移除和视频老化——确保观看者能够获得持续且有趣的新鲜内容体验。
第三方技术
为了支持我们的功能,我们使用一些第三方服务和应用程序。
Firebase:用于推送通知、评论和投票。
Amazon Media Live:用于流式传输和托管我们的内容。
示例
要运行示例项目,首先克隆仓库,然后从示例目录运行 pod install
。
要求
iOS 11.3 +
安装
AntViewer可以通过CocoaPods获取。要安装,只需将以下行添加到Podfile中:pod 'AntViewer'
。然后运行$ pod install
。
Plist条目
为了让您的应用访问相机,您需要添加以下 plist条目
- 隐私 - 摄像头使用描述(照片/视频)
<key>NSCameraUsageDescription</key>
<string>yourWording</string>
使用
认证
这是一个静态方法(无需对象初始化),您可以在任何需要的地方使用它(登录/应用程序启动等)。
AntWidget.authWith(apiKey: "put_your_apiKey_there", refUserId: "put_user_id_from_your_base_or_nil", nickname: "put_user_nickname_from_your_base_or_nil") { result in
switch result {
case .success:
break
case .failure(let error):
print(error)
}
}
推送通知
在我们的项目中,我们使用Firebase来实现PN。为了在您的端支持PN,您应该获取我们的发送ID的令牌,在认证成功后立即将所需的所有数据发送给我们(您可以在认证成功的块中调用它)并订阅我们的主题。
senderID = 1090288296965
//MARK: Connect PN to Antourage Firebase app
Messaging.messaging().retrieveFCMToken(forSenderID: "1090288296965") { (token, error) in
AntWidget.registerNotifications(FCMToken: token) { (result) in
switch result {
case .success(let topic):
Messaging.messaging().subscribe(toTopic: topic)
case .failure(let notificationError):
print(notificationError.localizedDescription)
}
}
}
添加UI部分
程序化
class ViewController: UIViewController {
var widget: AntWidget! {
didSet {
view.addSubview(widget)
widget.bottomMargin = 30
widget.rightMargin = 40
}
}
override func viewDidLoad() {
super.viewDidLoad()
widget = AntWidget()
widget.onViewerAppear = { [weak self] _ in
self?.changeSomething()
}
}
}
或通过界面构建器:只需添加UIView,将AntWidget输入到类字段,将其链接到出口。就是这样。
属性 | 类型 | 描述 |
---|---|---|
isLightMode | Bool | 有两个小部件外观模式:浅色 & 深色。默认为false。 |
bottomMargin | Int | 底部边距。默认:20。 |
rightMargin | Int | Right margin. Default: 20. |
onViewerAppear | Closure | 当用户打开小部件控制器时调用。 |
onViewerDisappear | Closure | 当用户关闭小部件控制器时调用。 |
作者
Mykola Vaniurskyi, [email protected]
授权协议
AntViewer 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。