|
@@ -11,14 +11,23 @@ import RxSwift
|
|
|
import SwiftyJSON
|
|
|
import Photos
|
|
|
|
|
|
-enum PublishMediaType {
|
|
|
- case image
|
|
|
- case video
|
|
|
+@objc(PublishMediaType)
|
|
|
+enum PublishMediaType: Int {
|
|
|
+ case image = 0
|
|
|
+ case video = 1
|
|
|
}
|
|
|
|
|
|
class PublishEditController: BaseViewController {
|
|
|
|
|
|
- var mediaType: PublishMediaType = .image
|
|
|
+ @objc var mediaType: PublishMediaType = .image
|
|
|
+ @objc var videoPath: String = ""
|
|
|
+ @objc var coverImagePath: String = ""
|
|
|
+ @objc var videoSize: CGSize = CGSize()
|
|
|
+ @objc var videoImage: UIImage? {
|
|
|
+ didSet {
|
|
|
+ imageArr = [videoImage] as? Array<UIImage>
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
var imgCount: Int = 0
|
|
|
var majorImageUrl: String?
|
|
@@ -37,6 +46,11 @@ class PublishEditController: BaseViewController {
|
|
|
var pubContent: String = ""
|
|
|
// 位置
|
|
|
var location: String = ""
|
|
|
+ // 视频id,当type为video时必填
|
|
|
+ var paraVideo: String = ""
|
|
|
+
|
|
|
+ var uploadManager: AlivcShortVideoUploadManager?
|
|
|
+ var vUploadFinished: Bool?
|
|
|
|
|
|
// MARK: 控制器生命周期
|
|
|
override func viewDidLoad() {
|
|
@@ -50,7 +64,27 @@ class PublishEditController: BaseViewController {
|
|
|
imageUrlArray = []
|
|
|
rightButton.isEnabled = false
|
|
|
rightButton.backgroundColor = kd8d8d8Color
|
|
|
- uploadAllImages(totalTimes: 0)
|
|
|
+
|
|
|
+ if mediaType == .image {
|
|
|
+ subLabel.text = "图片正在上传中(0/\(imageArr?.count ?? 0))..."
|
|
|
+ uploadAllImages(totalTimes: 0)
|
|
|
+ } else {
|
|
|
+ subLabel.text = "视频正在上传中(0/1)..."
|
|
|
+ communityVideoUploadAuthApi()
|
|
|
+ print("----上传视频")
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+// let serialQueue = DispatchQueue(label: "serial_queue")
|
|
|
+// serialQueue.async {
|
|
|
+// print("----startUpLoad\n----\(Thread.current)")
|
|
|
+// self.uploadAllImages(totalTimes: 0)
|
|
|
+// }
|
|
|
+
|
|
|
+// DispatchQueue.main.async {
|
|
|
+// print("----startUpLoad\n----\(Thread.current)")
|
|
|
+// self.uploadAllImages(totalTimes: 0)
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
override func setupViews() {
|
|
@@ -139,19 +173,14 @@ class PublishEditController: BaseViewController {
|
|
|
|
|
|
private lazy var progressView: UIProgressView = {
|
|
|
let progressView = UIProgressView(progressViewStyle: .default)
|
|
|
-// progressView.frame = CGRect(x: 0, y: 0, width: 200, height: 10)
|
|
|
-// progressView.layer.position = CGPoint(x: self.view.frame.width/2, y: 90)
|
|
|
progressView.setProgress(0, animated: false)
|
|
|
progressView.progressTintColor = k62CC74Color //进度颜色
|
|
|
progressView.trackTintColor = kd8d8d8Color //剩余进度颜色
|
|
|
- //通过改变进度条高度(宽度不变,高度变为默认的2倍)
|
|
|
-// progressView.transform = CGAffineTransform(scaleX: 1.0, y: 2.0)
|
|
|
return progressView
|
|
|
}()
|
|
|
|
|
|
private lazy var subLabel: UILabel = {
|
|
|
let subLabel = UILabel()
|
|
|
- subLabel.text = "图片正在上传中(0/\(imageArr?.count ?? 0))..."
|
|
|
subLabel.textColor = k333333Color
|
|
|
subLabel.font = kRegularFont14
|
|
|
subLabel.textAlignment = .left
|
|
@@ -176,6 +205,9 @@ extension PublishEditController : UITableViewDelegate, UITableViewDataSource {
|
|
|
case 0:
|
|
|
let picCell = PublishEditAddPicCell.cellWith(tableView: tableView, indexPath: indexPath)
|
|
|
picCell.pubImageArr = imageArr
|
|
|
+ if mediaType == .video {
|
|
|
+ picCell.maxImageCount = 1
|
|
|
+ }
|
|
|
picCell.reloadData()
|
|
|
picCell.choosePicBlock = {
|
|
|
[weak self] in
|
|
@@ -264,7 +296,7 @@ extension PublishEditController {
|
|
|
var curTimes: Int = totalTimes
|
|
|
|
|
|
print("-----StartUpload,totalTimes == \(totalTimes)")
|
|
|
- SwiftMoyaNetWorkServiceConfig.shared().configUploadSingleImgApi(imageArray: [imageArr![totalTimes]]) {
|
|
|
+ SwiftMoyaNetWorkServiceConfig.shared().configUploadSingleImgWithoutHudApi(imageArray: [self.imageArr![totalTimes]]) {
|
|
|
[weak self] (imgUrl) -> (Void) in
|
|
|
let urlStr: String = imgUrl as! String
|
|
|
self?.imageUrlArray.append(urlStr)
|
|
@@ -276,7 +308,10 @@ extension PublishEditController {
|
|
|
print("-----FinishUpload,Times == \(curTimes)")
|
|
|
curTimes += 1
|
|
|
// 更新进度
|
|
|
- self?.progressView.setProgress(Float(curTimes/(self?.imageArr!.count)!), animated: true)
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ print("----\(Thread.current)")
|
|
|
+ self?.progressView.setProgress(Float(curTimes/(self?.imageArr!.count)!), animated: true)
|
|
|
+ }
|
|
|
if curTimes == self?.imageArr!.count {
|
|
|
self?.subLabel.text = "图片上传成功!"
|
|
|
} else {
|
|
@@ -320,7 +355,7 @@ extension PublishEditController {
|
|
|
|
|
|
print("----mediaType == \(typeStr)\n----pubTitle = \(pubTitle)\n----simuTopicJsonStr == \(simuTopicJsonStr)\n----imgsJsonStr == \(imgsJsonStr)")
|
|
|
|
|
|
- SwiftMoyaNetWorkServiceCommunity.shared().communityPublishApi(type: typeStr, img: majorImageUrl ?? "", topic_ids: simuTopicJsonStr, video: "", title: pubTitle, content: pubContent, location: "", imgs: imgsJsonStr) {
|
|
|
+ SwiftMoyaNetWorkServiceCommunity.shared().communityPublishApi(type: typeStr, img: majorImageUrl ?? "", topic_ids: simuTopicJsonStr, video: paraVideo, title: pubTitle, content: pubContent, location: "", imgs: imgsJsonStr) {
|
|
|
[weak self] (communityPublishModel) -> (Void) in
|
|
|
let communityPublishModel = communityPublishModel as? CommunityPublishModel
|
|
|
print("----发布成功")
|
|
@@ -328,3 +363,77 @@ extension PublishEditController {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+// MARK: - 视频相关处理
|
|
|
+extension PublishEditController: AlivcShortVideoUploadManagerDelegate {
|
|
|
+
|
|
|
+ // 获取上传地址和凭证
|
|
|
+ func communityVideoUploadAuthApi() {
|
|
|
+
|
|
|
+ var vTitle: String = ""
|
|
|
+ if videoPath.count > 20 {
|
|
|
+ vTitle = String(videoPath.suffix(20))
|
|
|
+ } else {
|
|
|
+ vTitle = videoPath
|
|
|
+ }
|
|
|
+ SwiftMoyaNetWorkServiceCommunity.shared().communityVideoUploadAuthApi(title: vTitle, filename: vTitle, cover_url: coverImagePath) {
|
|
|
+ [weak self] (communityVideoAuthModel) -> (Void) in
|
|
|
+ let communityVideoAuthModel = communityVideoAuthModel as? CommunityVideoAuthModel
|
|
|
+ self?.paraVideo = communityVideoAuthModel?.videoId ?? ""
|
|
|
+ self?.startUploadVideo(communityVideoAuthModel!)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传视频
|
|
|
+ func startUploadVideo(_ authModel: CommunityVideoAuthModel) {
|
|
|
+ let info = AliyunUploadSVideoInfo()
|
|
|
+ uploadManager = AlivcShortVideoUploadManager.shared()
|
|
|
+ uploadManager?.setCoverImagePath(coverImagePath, videoInfo: info, videoPath: videoPath)
|
|
|
+ uploadManager?.managerDelegate = self
|
|
|
+ uploadManager?.uploadAddress = authModel.uploadAddress
|
|
|
+ uploadManager?.videoId = authModel.videoId
|
|
|
+ uploadManager?.uploadAuth = authModel.uploadAuth
|
|
|
+ uploadManager?.startUpload()
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传进度回调
|
|
|
+ func uploadManager(_ manager: AlivcShortVideoUploadManager!, updateProgress progress: CGFloat) {
|
|
|
+ DispatchQueue.main.async(execute: {
|
|
|
+ self.progressView.progress = Float(progress)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传状态回调
|
|
|
+ func uploadManager(_ manager: AlivcShortVideoUploadManager!, uploadStatusChangedTo newStatus: AlivcUploadStatus) {
|
|
|
+ switch newStatus {
|
|
|
+ case AlivcUploadStatus.failure:
|
|
|
+ DispatchQueue.main.async(execute: {
|
|
|
+ self.subLabel.text = "上传失败!"
|
|
|
+ SwiftProgressHUD.shared().showText("上传失败!")
|
|
|
+ })
|
|
|
+
|
|
|
+ case AlivcUploadStatus.success:
|
|
|
+ // 上传封面图
|
|
|
+ self.uploadVideoCoverImage()
|
|
|
+
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传视频封面图
|
|
|
+ func uploadVideoCoverImage() {
|
|
|
+ SwiftMoyaNetWorkServiceConfig.shared().configUploadSingleImgWithoutHudApi(imageArray: [videoImage!]) {
|
|
|
+ [weak self] (imgUrl) -> (Void) in
|
|
|
+ // 设置主图
|
|
|
+ self?.majorImageUrl = imgUrl as? String
|
|
|
+
|
|
|
+ self?.vUploadFinished = true
|
|
|
+ self?.subLabel.text = "上传成功!"
|
|
|
+ self?.rightButton.isEnabled = true
|
|
|
+ self?.rightButton.backgroundColor = k62CC74Color
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|