专业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()
          })
      }
    }
    

results matching ""

    No results matching ""