专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
发送带图片的微博
发送带图片的微博api文档地址:http://open.weibo.com/wiki/2/statuses/upload在
HMStatusListViewModel修改sendStatus方法,添加image: UIImage?参数,如果有传入image就发布带图片的微博/** 发布微博, 连续两次发布的微博不可以重复 parameter status: 微博内容 parameter sendStatusCallBack: 回调 */ func sendStatus(status: String, image: UIImage?, sendStatusCallBack: @escaping (Error?) -> ()) { // 判断token guard let access_token = HMUserAccountViewModel.shared.userAccount?.access_token else { print("token为空") return } // 参数 let parameters = [ "access_token": access_token, "status": status ] if let image = image { let urlString = "https://upload.api.weibo.com/2/statuses/upload.json" HMNetworkTool.shared.requestPost(URLString: urlString, parameters: parameters, constructingBodyWith: { (formData) in // 将图片转成NSData let imageData = UIImagePNGRepresentation(image)! // data: 要上传内容的2进制 // name: 接口文档指定的上传字段名称 // fileName: 保存在服务器的文件名称,看api文档,有规定有按规定来填,没有规定,随便填 // mimeType: 类型: image/png. image/jpeg, image/gif formData.appendPart(withFileData: imageData, name: "pic", fileName: "hehe", mimeType: "image/png") }, progress: nil, success: { (_, result) in sendStatusCallBack(nil) }, failure: { (_, error) in sendStatusCallBack(error) }) } else { // 没有图片 // url let urlString = "https://api.weibo.com/2/statuses/update.json" // 发送请求 HMNetworkTool.shared.request(method: .POST, URLString: urlString, parameters: parameters, progress: nil, success: { (_, result) in sendStatusCallBack(nil) }, failure: { (_, error) in sendStatusCallBack(error) }) } }在
HMComposeViewController的 发微博方法里面传入image参数func sendStatus() -> Void { // 获取要发布的内容 let status = textView.emoticonText() // 微博长度 let length = status.characters.count // 计算文本剩余长度 let leftLength = statusMaxLength - length if leftLength < 0 { SVProgressHUD.showError(withStatus: "文字超出长度") return } SVProgressHUD.showInfo(withStatus: "正在发布微博") let image = photoSelectorVC.photos.first HMStatusListViewModel.shared.sendStatus(status: status, image: image) { (error: Error?) in if error != nil { SVProgressHUD.showError(withStatus: "发布微博失败") print("error \(error)") return } // 发布微博成功了 SVProgressHUD.showSuccess(withStatus: "发布微博成功") DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1, execute: { self.close() }) } }