質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

472閲覧

SesameSDKをSwiftUIを使用し、施開錠を実装したアプリを作りたい

goodmido

総合スコア2

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2023/01/06 07:17

編集2023/01/06 07:41

前提

個人的にiOSでスマートロックセサミを操作できる簡単なアプリにチャレンジしています。
この方法(https://doc.candyhouse.co/ja/ios/quick_start_ios)でSesameSDKのダウンロードはできたのですが、公式ドキュメントはUIKitでの書き方なのですが、SwiftUIで実装したいと思っています。
とりあえず開錠施錠(toggle)をしてみたいのですが、UIKitで書かれたsdkの内容のため、SwiftUIでの実装方法が分からず困っています。
ググってみると、UIViewRepresentableプロトコルを利用した書き方でUIKitをSwiftUIで使う方法と出てきたのですが、この方法で合っていますでしょうか?

SwiftUIでの実装で、開錠施錠を成功された方いらっしゃいましたら是非ご教示いただきたいですTT

実現したいこと

ContentView.swift内にあるButtonのactionで、開錠施錠(toggle)を実装したい。

該当のソースコード

ContentView.swift

1 2import SwiftUI 3import SesameSDK 4 5struct ContentView: 6 7 var body: some View { 8 9 Button(action: { 10 print("Push button") 11 }, label: { 12 Text("Open Sesame!") 13 .font(.headline) 14 .fontWeight(.semibold) 15 .foregroundColor(.white) 16 .padding() 17 .padding(.horizontal, 20) 18 .background(Color.blue) 19 .cornerRadius(10) 20 }) 21 } 22} 23 24struct ContentView_Previews: PreviewProvider { 25 static var previews: some View { 26 ContentView() 27 } 28}

SesameSDK

1public protocol CHSesame2 : SesameSDK.CHSesameLock { 2 override var deviceStatus: SesameSDK.CHSesame2Status { get } 3 // デバイス状態 4 var intention: SesameSDK.CHSesame2Intention { get } 5 // locking:現在施錠しようとしている途中 ; unlocking:現在開錠しようとしている途中 6 var delegate: SesameSDK.CHSesame2Delegate? { get set } 7 // このDelegateメソッドを使用するとCHSesame2Status/CHSesame2MechStatus/CHSesame2Historyの変化があればSesameSDKがアプリUIにDelegateイベントを送る 8 override var mechStatus: SesameSDK.CHSesameProtocolMechStatus? { get } 9 // セサミの解錠・施錠の角度などの機械状態 10 var mechSetting: SesameSDK.CHSesame2MechSettings? { get } 11 // セサミの機械設定状態 12 var deviceShadowStatus: SesameSDK.CHSesame2ShadowStatus? { get } 13 // セサミのShadowステータス 14 override func getVersionTag(result: @escaping (SesameSDK.CHResult<String>)) 15 // SesameOSバージョンを取得 16 func getAutolockSetting(result: @escaping (SesameSDK.CHResult<Int>)) 17 // オートロック機能の設定状態を取得 18 func lock(historytag: Data?, result: @escaping (SesameSDK.CHResult<SesameSDK.CHEmpty>)) 19 // 施錠する 20 func unlock(historytag: Data?, result: @escaping (SesameSDK.CHResult<SesameSDK.CHEmpty>)) 21 // 解錠する 22 func toggle(historytag: Data?, result: @escaping (SesameSDK.CHResult<SesameSDK.CHEmpty>)) 23 // 解錠状態の場合は施錠する、施錠状態の場合は解錠する 24 func disableAutolock(historytag: Data?, result: @escaping (SesameSDK.CHResult<Int>)) 25 // オートロック機能をオフ 26 func getHistories(cursor: UInt?, _ result: @escaping SesameSDK.CHResult<SesameSDK.CHSesameHistoryPayload>) 27 // SesameSDK経由で新→旧との順番で履歴を取得する。 履歴が新→旧の順番で、1ページの中に最多50件の履歴が入ってる。 28 func getBleAdvParameter(_ result: @escaping SesameSDK.CHResult<SesameSDK.CHSesame2BleAdvParameter>) 29 // セサミデバイスが発信しているBLEアドバタイシング の Interval と TXPower の設定値を取得する。 30 func enableAutolock(historytag: Data?, delay: Int, result: @escaping (SesameSDK.CHResult<Int>)) 31 // オートロック機能の秒数を入力しオンにする ; delay: オートロック機能の秒数 32 func configureLockPosition(historytag: Data?, lockTarget: Int16, unlockTarget: Int16, result: @escaping (SesameSDK.CHResult<SesameSDK.CHEmpty>)) 33 // 施解錠の回転位置を設定する。範圍: -32767~0~32767 ; -32768 は意義のないデフォルト值。 例0˚ ⇄ 0 で 360˚ ⇄ 1024 34 func updateBleAdvParameter(historytag: Data?, interval: Double, txPower: Int8, _ result: @escaping SesameSDK.CHResult<SesameSDK.CHSesame2BleAdvParameter>) 35 /* セサミデバイスが発信しているBLEアドバタイシング の Interval と TXPower を調整する。 36 intervalには20ms~10240msまで設定可能ですが、次のいずれかの値の設定がアップル社のAccessory Design Guidelines for Apple Devices 35.5 Advertising Intervalにて推奨されています: [1285.0, 1022.5, 852.5, 760.0, 546.25, 417.5, 318.75, 211.25, 152.5, 20.0] 単位: ms 37 txPowerには次のいずれかの値が設定可能。 [4, 3, 0, -4, -8, -12, -16, -20, -40] 単位: dBm 38 */ 39}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2023/01/10 06:53

たぶん Sesame のプロトコルを実装したクラスのオブジェクトを生成して、そのライフタイムを管理する必要があります。 UIKit なら view controller で自然にできるのですが、SwiftUI だとその辺の理解が必要になりますね…。
goodmido

2023/01/17 03:11

回答ありがとうございます! ライフタイムを管理=AppDelegateで認識合っていますでしょうか? UIKit なら view controller で自然にできるのですが →なるほど、、ライフタイムを管理する方法についてもっと調査します><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問