狠狠撸

狠狠撸Share a Scribd company logo
殺しても死なないアプリ
~Core Bluetooth の「状態の保存と復元」機能~
堤 修一 @shu223
2015.5.13 potatotips #17
? 堤 修一(つつみ しゅういち)
? iOS専業フリーランス
? ブログ『Over&Out その後』
? 著書?
『iOS×BLE?Core Bluetoothプログラミング』?
『iOSアプリ開発 達人のレシピ100』
自己紹介
制作実绩(叠尝贰関连)
制作実绩(叠尝贰関连)
制作実绩(叠尝贰関连)
制作実绩(叠尝贰関连)
Music for the Deaf
制作実绩(叠尝贰関连)
Music for the Deaf
制作実绩(叠尝贰関连)
Music for the Deaf
制作実绩(叠尝贰関连)
Music for the Deaf
今日话すこと
今日话すこと
Core Bluetooth のバックグラウンド実行モードについて
今日话すこと
Core Bluetooth のバックグラウンド実行モードについて
- 対応方法
今日话すこと
Core Bluetooth のバックグラウンド実行モードについて
- 対応方法
- できること、できないこと
今日话すこと
Core Bluetooth のバックグラウンド実行モードについて
- 対応方法
- できること、できないこと
- 「状態の保存と復元」機能
Core Bluetooth の
バックグラウンド実行モード
対応方法
殺しても死なないアプリ ?Core Bluetooth の「状態の保存と復元」機能?
チェックマーク入れるだけ
チェックマーク入れるだけ
これだけでバックグラウンドでBLEによる通信が可能に
バックグラウンドで何
ができるのか?
基本的には何でもできる
基本的には何でもできる
? セントラル
- スキャン
- 接続
- Read、Write
- Notificationの受信
基本的には何でもできる
? セントラル
- スキャン
- 接続
- Read、Write
- Notificationの受信
? ペリフェラル
- アドバタイズ
- Read / Writeリクエストへの応答
- Notificationの送信
ただし
制约はある
制约はある
? セントラル
- スキャン間隔が長くなる
- スキャン开始时のサービス指定が必须
制约はある
? セントラル
- スキャン間隔が長くなる
- スキャン开始时のサービス指定が必须
? ペリフェラル
- アドバタイズ間隔が長くなる
- ローカル名がアドバタイズされなくなる
- サービスUUIDがオーバーフロー領域に入る
バックグラウンドでの
アプリの停止
バックグラウンドでアプリが?
停止(終了)すると
バックグラウンドでアプリが?
停止(終了)すると
→ バックグラウンドタスクも停止する
バックグラウンドでアプリが?
停止(終了)すると
→ バックグラウンドタスクも停止する
バックグラウンドでアプリが停止するケース
? (メモリ消費量等の理由で)システムによって停止
? ユーザーによって明示的に停止
困る例:スマートロック
困る例:スマートロック
? ユーザーが家を出れば自動的にドアをロックし、帰っ
てくればロックを解除する
困る例:スマートロック
? ユーザーが家を出れば自動的にドアをロックし、帰っ
てくればロックを解除する
- BLEの接続が切れることにより施錠され、次に家に帰ってきた
ときに自動的に再接続して解錠できるよう、バックグラウンド
で接続要求を動作させておく
困る例:スマートロック
? ユーザーが家を出れば自動的にドアをロックし、帰っ
てくればロックを解除する
- BLEの接続が切れることにより施錠され、次に家に帰ってきた
ときに自動的に再接続して解錠できるよう、バックグラウンド
で接続要求を動作させておく
? 外出が数日間にわたり、その間にアプリが停止?
→ 自動的にロック解除されず、家に入れない!
状態の保存と復元?
(State Preservation and 搁别蝉迟辞谤补迟颈辞苍)
? アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
? アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
? システムはアプリケーションを停止してメモリを解
放する際、状態の復元で必要になるオブジェクトの
情報を保存する
? アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
? システムはアプリケーションを停止してメモリを解
放する際、状態の復元で必要になるオブジェクトの
情報を保存する
→ アプリを杀しても生き続ける!
デモ
殺しても死なないアプリ ?Core Bluetooth の「状態の保存と復元」機能?
杀しても通知が届く
実装方法
実装方法
? バックグラウンド実行モードを有効にする
実装方法
? バックグラウンド実行モードを有効にする
? セントラルマネージャ 及び ペリフェラルマネージャ
初期化時にオプションを与える
基本的にはこれだけです。
が、
「アプリの状態すべて」?
が復元されるわけではない
「アプリの状態すべて」?
が復元されるわけではない
? あくまでシステムがやってくれるのは、BLEの処理
を引き継いで、イベント発生のタイミングでアプリ
をバックグラウンドで起こして当該デリゲートメソッ
ドを呼ぶところまで
「アプリの状態すべて」?
が復元されるわけではない
? あくまでシステムがやってくれるのは、BLEの処理
を引き継いで、イベント発生のタイミングでアプリ
をバックグラウンドで起こして当該デリゲートメソッ
ドを呼ぶところまで
? その他の諸々は自分で復元してやる必要がある
続きは書籍で!
? konashi開発者 松村礼央さんとの共著
? BLEについては知識ゼロからでOK!
? BLEの仕様についても詳細な解説があ
るので、既に案件でバリバリやって
る方もオススメ
? konashi等のデバイスがなくても、
iPhone同士でも試せます

More Related Content

殺しても死なないアプリ ?Core Bluetooth の「状態の保存と復元」機能?