Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
殺しても死なないアプリ
∼Core Bluetooth の「状態の保存と復元」機能∼
堤 修一 @shu223
2015.5.13 potatotips #17
• 堤 修一(つつみ しゅういち)
• iOS専業フリーランス
• ブログ『Over&Out その後』
• 著書

『iOS×BLE Core Bluetoothプログラミング』

『iOSアプリ開発 達人のレシピ100』
自己紹介
制作実績(BLE関連)
制作実績(BLE関連)
制作実績(BLE関連)
制作実績(BLE関連)
Music for the Deaf
制作実績(BLE関連)
Music for the Deaf
制作実績(BLE関連)
Music for the Deaf
制作実績(BLE関連)
Music for the Deaf
今日話すこと
今日話すこと
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 Restoration)
• アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
• アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
• システムはアプリケーションを停止してメモリを解
放する際、状態の復元で必要になるオブジェクトの
情報を保存する
• アプリケーションが停止していても、代わりにBLE
関係のタスクを実行するよう、システムに要求する
ための機能
• システムはアプリケーションを停止してメモリを解
放する際、状態の復元で必要になるオブジェクトの
情報を保存する
→ アプリを殺...
デモ
殺しても通知が届く
実装方法
実装方法
• バックグラウンド実行モードを有効にする
実装方法
• バックグラウンド実行モードを有効にする
• セントラルマネージャ 及び ペリフェラルマネージャ
初期化時にオプションを与える
基本的にはこれだけです。
が、
「アプリの状態すべて」

が復元されるわけではない
「アプリの状態すべて」

が復元されるわけではない
• あくまでシステムがやってくれるのは、BLEの処理
を引き継いで、イベント発生のタイミングでアプリ
をバックグラウンドで起こして当該デリゲートメソッ
ドを呼ぶところまで
「アプリの状態すべて」

が復元されるわけではない
• あくまでシステムがやってくれるのは、BLEの処理
を引き継いで、イベント発生のタイミングでアプリ
をバックグラウンドで起こして当該デリゲートメソッ
ドを呼ぶところまで
• その他の諸々は自...
続きは書籍で!
• konashi開発者 松村礼央さんとの共著
• BLEについては知識ゼロからでOK!
• BLEの仕様についても詳細な解説があ
るので、既に案件でバリバリやって
る方もオススメ
• konashi等のデバイスがなくても、
i...
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
Upcoming SlideShare
Loading in …5
×

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

16,979 views

Published on

Core Bluetooth のバックグラウンド実行モードについて

・バックグラウンドでできること
・バックグラウンドにおける制約
・状態の保存と復元

Published in: Technology
  • Be the first to comment

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

  1. 1. 殺しても死なないアプリ ∼Core Bluetooth の「状態の保存と復元」機能∼ 堤 修一 @shu223 2015.5.13 potatotips #17
  2. 2. • 堤 修一(つつみ しゅういち) • iOS専業フリーランス • ブログ『Over&Out その後』 • 著書
 『iOS×BLE Core Bluetoothプログラミング』
 『iOSアプリ開発 達人のレシピ100』 自己紹介
  3. 3. 制作実績(BLE関連)
  4. 4. 制作実績(BLE関連)
  5. 5. 制作実績(BLE関連)
  6. 6. 制作実績(BLE関連) Music for the Deaf
  7. 7. 制作実績(BLE関連) Music for the Deaf
  8. 8. 制作実績(BLE関連) Music for the Deaf
  9. 9. 制作実績(BLE関連) Music for the Deaf
  10. 10. 今日話すこと
  11. 11. 今日話すこと Core Bluetooth のバックグラウンド実行モードについて
  12. 12. 今日話すこと Core Bluetooth のバックグラウンド実行モードについて - 対応方法
  13. 13. 今日話すこと Core Bluetooth のバックグラウンド実行モードについて - 対応方法 - できること、できないこと
  14. 14. 今日話すこと Core Bluetooth のバックグラウンド実行モードについて - 対応方法 - できること、できないこと - 「状態の保存と復元」機能
  15. 15. Core Bluetooth の バックグラウンド実行モード 対応方法
  16. 16. チェックマーク入れるだけ
  17. 17. チェックマーク入れるだけ これだけでバックグラウンドでBLEによる通信が可能に
  18. 18. バックグラウンドで何 ができるのか?
  19. 19. 基本的には何でもできる
  20. 20. 基本的には何でもできる • セントラル - スキャン - 接続 - Read、Write - Notificationの受信
  21. 21. 基本的には何でもできる • セントラル - スキャン - 接続 - Read、Write - Notificationの受信 • ペリフェラル - アドバタイズ - Read / Writeリクエストへの応答 - Notificationの送信
  22. 22. ただし
  23. 23. 制約はある
  24. 24. 制約はある • セントラル - スキャン間隔が長くなる - スキャン開始時のサービス指定が必須
  25. 25. 制約はある • セントラル - スキャン間隔が長くなる - スキャン開始時のサービス指定が必須 • ペリフェラル - アドバタイズ間隔が長くなる - ローカル名がアドバタイズされなくなる - サービスUUIDがオーバーフロー領域に入る
  26. 26. バックグラウンドでの アプリの停止
  27. 27. バックグラウンドでアプリが
 停止(終了)すると
  28. 28. バックグラウンドでアプリが
 停止(終了)すると → バックグラウンドタスクも停止する
  29. 29. バックグラウンドでアプリが
 停止(終了)すると → バックグラウンドタスクも停止する バックグラウンドでアプリが停止するケース • (メモリ消費量等の理由で)システムによって停止 • ユーザーによって明示的に停止
  30. 30. 困る例:スマートロック
  31. 31. 困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する
  32. 32. 困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する - BLEの接続が切れることにより施錠され、次に家に帰ってきた ときに自動的に再接続して解錠できるよう、バックグラウンド で接続要求を動作させておく
  33. 33. 困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する - BLEの接続が切れることにより施錠され、次に家に帰ってきた ときに自動的に再接続して解錠できるよう、バックグラウンド で接続要求を動作させておく • 外出が数日間にわたり、その間にアプリが停止
 → 自動的にロック解除されず、家に入れない!
  34. 34. 状態の保存と復元
 (State Preservation and Restoration)
  35. 35. • アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能
  36. 36. • アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能 • システムはアプリケーションを停止してメモリを解 放する際、状態の復元で必要になるオブジェクトの 情報を保存する
  37. 37. • アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能 • システムはアプリケーションを停止してメモリを解 放する際、状態の復元で必要になるオブジェクトの 情報を保存する → アプリを殺しても生き続ける!
  38. 38. デモ
  39. 39. 殺しても通知が届く
  40. 40. 実装方法
  41. 41. 実装方法 • バックグラウンド実行モードを有効にする
  42. 42. 実装方法 • バックグラウンド実行モードを有効にする • セントラルマネージャ 及び ペリフェラルマネージャ 初期化時にオプションを与える
  43. 43. 基本的にはこれだけです。
  44. 44. が、
  45. 45. 「アプリの状態すべて」
 が復元されるわけではない
  46. 46. 「アプリの状態すべて」
 が復元されるわけではない • あくまでシステムがやってくれるのは、BLEの処理 を引き継いで、イベント発生のタイミングでアプリ をバックグラウンドで起こして当該デリゲートメソッ ドを呼ぶところまで
  47. 47. 「アプリの状態すべて」
 が復元されるわけではない • あくまでシステムがやってくれるのは、BLEの処理 を引き継いで、イベント発生のタイミングでアプリ をバックグラウンドで起こして当該デリゲートメソッ ドを呼ぶところまで • その他の諸々は自分で復元してやる必要がある
  48. 48. 続きは書籍で! • konashi開発者 松村礼央さんとの共著 • BLEについては知識ゼロからでOK! • BLEの仕様についても詳細な解説があ るので、既に案件でバリバリやって る方もオススメ • konashi等のデバイスがなくても、 iPhone同士でも試せます

×