iOS版 SesameSDK

Appをダウンロード
- Sesame app on
https://apps.apple.com/app/id1532692301/
- Sesame app on
https://testflight.apple.com/join/Rok4GOFD/
インストール手順
1. 依存関係のインストール
- Scheme を SesameSDK に設定し、任意のiOSデバイスを選択します。
command+shift+kを押して product フォルダをクリアします。
command+bを押して SDK をビルドします。
- ビルドが完了したら、Xcode -> SDK project ->
Productsフォルダの下にある SesameSDK.framework を右クリックし、「Finderで開く」を選択し、SesameSDK.frameworkを取得します。
- ビルドが完了したら、Xcode -> SDK project ->
SesameWatchKitSDK
- Scheme を SesameWatchKitSDK に設定し、任意のwatch OSデバイスを選択します。
command+shift+kを押して product フォルダをクリアします。
command+bを押して SDK をビルドします。
- ビルドが完了したら、Xcode -> SDK project ->
Productsフォルダ下にある SesameWatchKitSDK.framework を右クリックし、「Finderで開く」を選択し、SesameWatchKitSDK.frameworkを取得します。
- ビルドが完了したら、Xcode -> SDK project ->
Swift Package
Swift Package Managerは、Swiftのコードの配布を管理するためのツールです。Swiftのビルドシステムに統合されており、依存関係のダウンロード、コンパイル、リンクプロセスを自動で行います。
- プロジェクトにSesameSDKをSwift Package Managerを使って統合します:
c
dependencies: [
.package(url: "https://github.com/CANDY-HOUSE/SesameSDK_iOS_with_DemoApp.git", .branch("master"))
]
手動統合
- 任何の依存関係マネージャを使用したくない場合は、SesameSDKを手動でプロジェクトに統合することも可能です。

2. 認可の追加
jsx
<key> NSBluetoothAlwaysUsageDescription </key>
<string> セサミスマートロックに接続し、ドアのロック/アンロックを行います。 </string>
<key> NSBluetoothPeripheralUsageDescription </key>
<string> このアプリは、アプリを使用していない時でも、近くのBluetoothデバイスにデータを提供することがあります。
</string>3. 初期化
適切なタイミングでBluetoothスキャンを開始します。
jsx
CHBluetoothCenter.shared.enableScan { res in }Bluetoothのステータスが変わった時のコールバック
jsx
public protocol CHBleStatusDelegate: AnyObject {
func didScanChange(status: CHScanStatus)
}スキャンしたセサミデバイスのリストは、1秒ごとの頻度で呼び出し元に渡されます。
jsx
public protocol CHBleManagerDelegate: AnyObject {
func didDiscoverUnRegisteredCHDevices(_ devices: [CHDevice])
}4. デバイスへの接続
接続を確立する前に、デバイスの状態が接続可能状態であることを確認する必要があります。
jsx
if sesame5.deviceStatus == .receivedBle() {
sesame5.connect() { _ in }
}この時点で、Sesameデバイスの接続状態のコールバックを受信します。
jsx
public protocol CHDeviceStatusDelegate: AnyObject {
func onBleDeviceStatusChanged(device: CHDevice, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?)
func onMechStatus(device: CHDevice)
}5. デバイスの登録
接続状態が「登録準備完了」になった時点で、デバイスを登録してペアリングを完了させることができます。デバイスの登録は、デバイスとのペアリングを行うために必要な手順です。
jsx
if device.deviceStatus == .readyToRegister() {
device.register( _ in )
}登録が完了すると、CHDeviceManagerを使ってペアリング済みのデバイスを取得することができます。
jsx
var chDevices = [CHDevice]()
CHDeviceManager.shared.getCHDevices { result in
if case let .success(devices) = result {
chDevices = devices.data
}
}6. ロック・アンロック
ペアリング済みのデバイスを取得したら、APPを通じてロックとアンロックを実行することが可能になります。
ロック
jsx
public func lock(historytag: Data?, result: @escaping (CHResult<CHEmpty>)) {
if deviceShadowStatus != nil,
deviceStatus.loginStatus == .unlogined {
CHIoTManager.shared.sendCommandToWM2(.lock, self) { _ in
result(.success(CHResultStateNetworks(input: CHEmpty())))
}
return
}
if (self.checkBle(result)) { return }
let hisTag = Data.createOS2Histag(historytag ?? self.sesame2KeyData?.historyTag)
sendCommand(.init(.lock,hisTag)) { responsePayload in
if responsePayload.cmdResultCode == .success {
result(.success(CHResultStateBLE(input: CHEmpty())))
} else {
result(.failure(self.errorFromResultCode(responsePayload.cmdResultCode)))
}
}
}アンロック
jsx
public func unlock(historytag: Data?, result: @escaping (CHResult<CHEmpty>)) {
if deviceShadowStatus != nil,
deviceStatus.loginStatus == .unlogined {
CHIoTManager.shared.sendCommandToWM2(.unlock, self) { _ in
result(.success(CHResultStateNetworks(input: CHEmpty())))
}
return
}
if (self.checkBle(result)) { return }
let hisTag = Data.createOS2Histag(historytag ?? self.sesame2KeyData?.historyTag)
sendCommand(.init(.unlock,hisTag)) { responsePayload in
if responsePayload.cmdResultCode == .success {
result(.success(CHResultStateBLE(input: CHEmpty())))
} else {
result(.failure(self.errorFromResultCode(responsePayload.cmdResultCode)))
}
}
}7. 通信プロトコル
各命令の詳細は BlueToothプロトコル を参照してください。
- 詳細を見る:BlueTooth プロトコル
8. 詳細を見る
SesameSDKの詳細設計については、以下の設計図とフローチャートを参照してください。
フレームワーク/モジュールの選択
ログイン・登録: Amazon Web Services
ブルートゥース: CoreBluetooth
ローカルストレージ: CoreData
使用ライブラリ: AWSMobileClientXCF
Siri Intents:Intents
Intents参考記事:appintents
BLE 製品コードのサンプル解説
各 Class の詳細は Sesame SDK Class を参照してください。
- 詳細を見る:Sesame SDK Class
Bluetooth状態マシン

iOS クラス図
