CANDY-HOUSE / SesameSDK_iOS_with_DemoApp

SesameSDK3.0は、iOS/Android/Embedded向けのBluetooth/AIoT(Internet of Things)ライブラリであり、オープンソース、使いやすく、強力、かつ永続的に無料です。公式のセサミアプリもこのSesameSDKを使用しており、このSDKを用いてあなたのアプリにもセサミアプリが持つ全ての機能を組み込むことができます。

Home Page:https://jp.candyhouse.co

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

セサミアプリのゲストキー発行機能について

coco-works opened this issue · comments

※メールで問い合わせたところ、こちらに書くように指示を受けました。

現在本家のセサミアプリにはオーナー・マネージャー・ゲストキーの発行ができるようになっていますが、
サンプルではその機能が省かれています。

使用しているのはCHDeviceのcreateGuestKeyかと思いますが、処理として戻り値がない認識のため、このメソッドを使用した処理は実行できていません。ゲストキーの発行方法について別途方法があればご教授いただければ幸いです。
`
func createGuestKey(result: @escaping CHResult) {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let deviceKey = getKey() //返回CHDeviceKey
let jsonData = try! encoder.encode(deviceKey)
var data = try! JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any]
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd HH:mm"
dateFormatter.locale = Locale(identifier: "ja_JP")
data["keyName"] = dateFormatter.string(from: date)
}

以下はQRCodeViewControllerでコメントアウトされているメソッド

func generateDeviceQRCode() {
if (device is CHWifiModule2) {
introductionLabel.text = "co.candyhouse.sesame2.AddWifiModule2KeyByScan".localized
introductionDetailLabel.text = "co.candyhouse.sesame2.AddWifiModule2KeyByScanDetail".localized
} else {
introductionLabel.text = "co.candyhouse.sesame2.AddKeyByScan".localized
introductionDetailLabel.text = "co.candyhouse.sesame2.AddKeyByScanDetail".localized
}

    let circleAppIcon = UIImage(named: "AppIcon")!.circleImage()

    if let qrCodeString = qrCodeString {
        self.qrCodeImageView.image = UIImage.generateQRCode(qrCodeString,
                                                            circleAppIcon!,
                                                            .black)
    } else {
        ViewHelper.showLoadingInView(view: self.qrCodeImageView)
        device.qrCodeWithKeyLevel(keyLevel) { qrCodeURL in
            executeOnMainThread {
                ViewHelper.hideLoadingView(view: self.qrCodeImageView)
                if let qrCodeURL = qrCodeURL {
                    self.qrCodeImageView.image = UIImage.generateQRCode(qrCodeURL,
                                                                   circleAppIcon!,
                                                                   .black)
                }
            }
        }
    }
}

`

Reply to [coco-works]: The guest key distribution feature is not available, the owner and manager are available for the Sesame iOS Demo application. Because the guest key needs to connect to the server to authority.

Complete example blow:

    func createGuestKey(result: @escaping CHResult<String>) {
        let encoder = JSONEncoder()
        encoder.outputFormatting = .prettyPrinted
        let deviceKey = getKey() //返回CHDeviceKey
        let jsonData = try! encoder.encode(deviceKey)
        var data = try! JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any]
        let date = Date()
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM/dd HH:mm"
        dateFormatter.locale = Locale(identifier: "ja_JP")
        data["keyName"] = dateFormatter.string(from: date)
        CHAccountManager.shared.API(request: .init(.post, "/device/v1/sesame2/\(deviceId.uuidString)/guestkey", data)) { postResult in
            switch postResult {
            case .success(let data):
                let decoder = JSONDecoder()
                let guestKey = try! decoder.decode(String.self, from: data!)
                result(.success(.init(input: guestKey)))
            case .failure(let error):
                result(.failure(error))
            }
        }
    }