Blame view

Twear/Setting/WeChatSportVC.swift 8.78 KB
75d24c15   yangbin   123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  //
  //  WeChatSportVC.swift
  //  Twear
  //
  //  Created by yangbin on 2021/12/26.
  //
  
  import UIKit
  import Photos
  import MBProgressHUD
  import Alamofire
  
  class WeChatSportVC: UIViewController {
      
      @IBOutlet weak var QRCodeImageView: UIImageView!
      
      
      @IBOutlet weak var textView: UITextView!
      override func viewDidLoad() {
          super.viewDidLoad()
          
          title = LocString("微信运动")
          QRCodeImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(saveImage(_:))))
          let hud = MBProgressHUD.showAdded(to: QRCodeImageView, animated: true)
          hud.bezelView.style = .solidColor
          hud.bezelView.backgroundColor = .clear
          //        MBProgressHUD.showInView("", icon: nil, view: )
          var macStr = CurDevice.mac
          macStr = macStr.replacingOccurrences(of: ":", with: "", options: .literal, range: nil)
          let url = "http://www.hodafone.com.cn/qwear/deviceRegisterQuery.php?device_mac=\(macStr)"
          Alamofire.request(url).responseData { responseData in
              if let data = responseData.data, let dataStr = String.init(data: data, encoding: .utf8) {
                  if let left = dataStr.range(of: "http://")?.lowerBound, let right = dataStr.range(of: "<br>authorize_result")?.lowerBound {
                      let qrticket = dataStr[left..<right]
                      self.createQRCode(String(qrticket))
                      hud.hide(animated: true)
                      print(qrticket)
                  }
  //                let qrticket = dataStr[dataStr.range(of: "http://")!.lowerBound..<dataStr.range(of: "<br>authorize_result")!.lowerBound]
582f536d   yangbin   common:2022.1.28
40
  //                dataStr    String    "<!DOCTYPE html> \r\n<html>\r\n<head>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\t<title>手表二维码获取</title>\r\n</head>\r\n\r\n<body>\r\n\r\n<h1>Welcome to Qwear Sport World!</h1> \r\n\r\nmac = 00E012345755<br>qrticket = \":{\"errcode\":100020,\"errmsg\":\"account quota not enough\"<br>authorize_result = device id invalid<br> \r\n \r\n</body> \r\n</html> "
75d24c15   yangbin   123
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
                 
              }
          }
          let q1 = "\(LocString("绑定微信运动前的准备"))\n\n"
          let a1 = LocString("1.解绑设备(苹果手机还需在系统蓝牙中忽略设备)\n2.开启手机蓝牙\n3.确保手表(手环)蓝牙是断开的\n\n")
          let q2 = "\(LocString("微信运动的绑定方法"))\n\n"
          let a2 = LocString("1.本界面的图片已经存储于手机相册,打开微信'扫一扫'功能\n2.右上角选择'从相册选取二维码'\n3.找到存储于手机中的图片,识别二维码\n4.在弹出的页面中选择”绑定设备”,进入公众号,完成绑定。\n\n")
          let q3 = "\(LocString("怎么知道我的设备添加了微信运动?"))\n\n"
          let a3 = LocString("关闭APP(苹果手机需要在蓝牙中忽略设备),打开微信运动可以看到设备是连接状态,说明你已经添加了微信运动。\n\n")
          let q4 = "\(LocString("怎么删除微信运动?"))\n\n"
          let a4 = LocString("打开微信-我-设置-设备-选择设备-删除设备\n\n")
          let q5 = "\(LocString("我添加了微信运动,为什么手环(手表)的数据更新不了?"))\n\n"
          let a5 = LocString("原因1:如果你微信运动绑定了手机或者其他的设备,微信运动只会显示数据最大的那一个.\n原因2:如果微信运动没有连接上设备,数据也同步不了\n\n")
          let q6 = "\(LocString("每次使用微信运动都需要解绑设备或者忽略设备吗?"))\n\n"
          let a6 = LocString("1.不需要,只是在第一次添加微信运动的时候需要这样做,这样做是为了释放设备蓝牙,使微信可以搜索到设备。(如果设备已经被手机连上,微信运动是无法搜索到设备的)\n2.绑定微信运动后,APP和微信运动可以同时连接设备,互不影响。")
          let string = NSMutableAttributedString(string: q1+a1+q2+a2+q3+a3+q4+a4+q5+a5+q6+a6)
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange(0, q1.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange(q1.count, a1.count))
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange(q1.count+a1.count, q2.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange(q1.count+a1.count+q2.count, a2.count))
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange((q1+a1+q2+a2).count, q3.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange((q1+a1+q2+a2+q3).count, a3.count))
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange((q1+a1+q2+a2+q3+a3).count, q4.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange((q1+a1+q2+a2+q3+a3+q4).count, a4.count))
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange((q1+a1+q2+a2+q3+a3+q4+a4).count, q5.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange((q1+a1+q2+a2+q3+a3+q4+a4+q5).count, a5.count))
          string.addAttributes([.font: RegularFont(17)], range: NSMakeRange((q1+a1+q2+a2+q3+a3+q4+a4+q5+a5).count, q6.count))
          string.addAttributes([.font: RegularFont(15)], range: NSMakeRange((q1+a1+q2+a2+q3+a3+q4+a4+q5+a5+q6).count, a6.count))
          textView.attributedText = string
          
          
      }
      
      func createQRCode(_ qrticket: String) {
          let filter = CIFilter.init(name: "CIQRCodeGenerator")
          filter?.setDefaults()
          /// Add Data
          
          //链接转换
          let data = qrticket.data(using: .utf8)
          filter?.setValue(data, forKeyPath: "inputMessage")
          /// Out Put
          let outputImage = filter?.outputImage
          /// Show QRCode
          QRCodeImageView.image = createUIImageFromCIImage(image: outputImage!, size: SCREEN_WIDTH)
      }
      
      func createUIImageFromCIImage(image: CIImage, size: CGFloat) -> UIImage {
          let extent = image.extent.integral
          let scale = min(size / extent.width, size / extent.height)
          
          /// Create bitmap
          let width: size_t = size_t(extent.width * scale)
          let height: size_t = size_t(extent.height * scale)
          let cs: CGColorSpace = CGColorSpaceCreateDeviceGray()
          let bitmap: CGContext = CGContext(data: nil, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 0, space: cs, bitmapInfo: 1)!
          
          ///
          let context = CIContext.init()
          let bitmapImage = context.createCGImage(image, from: extent)
          bitmap.interpolationQuality = .none
          bitmap.scaleBy(x: scale, y: scale)
          bitmap.draw(bitmapImage!, in: extent)
          
          let scaledImage = bitmap.makeImage()
          return UIImage.init(cgImage: scaledImage!)
      }
      
      @objc private func saveImage(_ gestureRecognizer: UITapGestureRecognizer) {
          if QRCodeImageView.image == nil {
              return
          }
          // 判断权限
          switch PHPhotoLibrary.authorizationStatus() {
          case .authorized:
              self.saveImage()
          case .notDetermined:
              PHPhotoLibrary.requestAuthorization { [weak self] (status) in
                  if status == .authorized {
                      self?.saveImage()
                  } else {
                      MBProgressHUD.showh(LocString("请在“设置-隐私-照片“选项中,允许'HDF wear'访问你的照片"))
                  }
              }
          case .restricted, .denied:
              let alert = UIAlertController(title: LocString("提示"), message: LocString("请在“设置-隐私-照片“选项中,允许'HDF wear'访问你的照片"), preferredStyle: .alert)
              let confirm = UIAlertAction(title: LocString("确定"), style: .default)
              alert.addAction(confirm)
          default:
              break
          }
      }
      
      private func saveImage() {
          //UIImageView.image must be used from main thread only
          DispatchQueue.main.async {
              if let image = self.QRCodeImageView.image {
                  PHPhotoLibrary.shared().performChanges({
                      PHAssetChangeRequest.creationRequestForAsset(from: image)
                  }, completionHandler: { (isSuccess, error) in
                      if isSuccess {// 成功
                          MBProgressHUD.showh("已保存到系统相册")
                      }
                  })
              }
          }
      }
      
      deinit {
          print("deinit\(NSStringFromClass(type(of: self)))!!!!!!!")
      }
      
      /*
       // MARK: - Navigation
       
       // In a storyboard-based application, you will often want to do a little preparation before navigation
       override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       // Get the new view controller using segue.destination.
       // Pass the selected object to the new view controller.
       }
       */
      
  }