self.title = "VoiceChat"
self.view.backgroundColor = .white
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "扫描", style: .done, target: self, action: #selector(scanAction))
- self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: .done, target: self, action: #selector(loginAction))
+ self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "登录", style: .done, target: self, action: #selector(registerAction))
tableView.delegate = self
tableView.dataSource = self
if peripheral.name == nil || (peripheral.name!.isEmpty){
return
}
- print(peripheral.name)
+ print(peripheral)
dataArray.append(peripheral)
tableView.reloadData()
}
Logger.log("[recv][info]")
return
}
- Logger.log("[recv][info] " + data.joined("") + MSUtils.data(toUtf8String: data))
- if MSUtils.data(toHexString: data) == "7b2272737369223a2230227d"{
+ Logger.log("[recv][info] " + data.joined("") + MSTool.dataToUtf8String(data))
+ if data.joined("") == "7b2272737369223a2230227d"{
return
}
if let sender = lastSender{
let sender = dictionaryToSender(["cmd":"get_MAC"])
sender.completion = { result in
Logger.log("\(result.description)")
- if result.isSuccess,let value = MSUtils.data(toDictionary: result.data)["MAC"] as? String{
+ if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["MAC"] as? String{
finished(value)
}
else{
let sender = dictionaryToSender(["cmd":"get_productKey"])
sender.completion = { result in
Logger.log("\(result.description)")
- if result.isSuccess,let value = MSUtils.data(toDictionary: result.data)["productKey"] as? String{
+ if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["productKey"] as? String{
finished(value)
}
else{
let sender = dictionaryToSender(["cmd":"get_secretKey"])
sender.completion = { result in
Logger.log("\(result.description)")
- if result.isSuccess,let value = MSUtils.data(toDictionary: result.data)["secretKey"] as? String{
+ if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["secretKey"] as? String{
finished(value)
}
else{
let sender = dictionaryToSender(["cmd":"get_deviceSecret"])
sender.completion = { result in
Logger.log("\(result.description)")
- if result.isSuccess,let value = MSUtils.data(toDictionary: result.data)["deviceSecret"] as? String{
+ if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["deviceSecret"] as? String{
finished(value)
}
else{
extension MSBle{
func dictionaryToSender(_ dict: [String: Any]) ->MSBleSender{
let sender = MSBleSender()
- let data = MSUtils.dictionary(toData: dict)
- let str = MSUtils.data(toUtf8String: data)
+ let str = MSTool.dataToUtf8String(MSTool.jsonToData(dict)!)
let list = splitCMD(str: str)
Logger.log("[send][info][all][string] \(str)")
if list.count > 1 {
//
import UIKit
+import CommonCrypto
class MSTool{
+ static func dataToUtf8String(_ data:Data) ->String{
+ let text = String(data: data, encoding: .utf8)
+ return text ?? ""
+ }
+
static func stringToJson(_ text:String)->[String:Any]?{
guard let data = text.data(using: .utf8) else{
return nil
}
static func jsonToData(_ json:[String:Any])->Data?{
do {
- let jsonData = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
+ let jsonData = try JSONSerialization.data(withJSONObject: json, options: .fragmentsAllowed)
return jsonData
} catch {
return nil
}
return randomString
}
+
+ static func stringToHmacSha1(key: String, text: String) -> String {
+ let cKey = key.cString(using:.utf8)!
+ let cData = text.cString(using:.utf8)!
+ var cHMAC = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))
+ CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA1), cKey, strlen(cKey), cData, strlen(cData), &cHMAC)
+ var output = ""
+ for i in 0..<CC_SHA1_DIGEST_LENGTH {
+ output.append(String(format: "%02X", cHMAC[Int(i)]))
+ }
+ return output
+ }
}