Submit Search
Upload
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
•
21 likes
•
23,560 views
Shuichi Tsutsumi
Follow
Core Bluetooth のバックグラウンド実行モードについて ・バックグラウンドでできること ・バックグラウンドにおける制約 ・状態の保存と復元
Read less
Read more
Technology
Report
Share
Report
Share
1 of 50
Download now
Download to read offline
Recommended
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
CODE BLUE
テスト設計・テストケース作成 グループ
テスト設計・テストケース作成 グループ
Tomoaki Fukura
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
こわくない Git
こわくない Git
Kota Saito
Recommended
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
CODE BLUE
テスト設計・テストケース作成 グループ
テスト設計・テストケース作成 グループ
Tomoaki Fukura
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
こわくない Git
こわくない Git
Kota Saito
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
GREE VR Studio Lab
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
Kanako Kobayashi
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
AI-900 ポイント解説
AI-900 ポイント解説
Yoshitaka Seo
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
exwzds
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
REST API のコツ
REST API のコツ
pospome
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Shuichi Tsutsumi
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Shuichi Tsutsumi
More Related Content
What's hot
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
GREE VR Studio Lab
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
Kanako Kobayashi
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
AI-900 ポイント解説
AI-900 ポイント解説
Yoshitaka Seo
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
exwzds
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
REST API のコツ
REST API のコツ
pospome
What's hot
(20)
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
WebSocketのキホン
WebSocketのキホン
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
AI-900 ポイント解説
AI-900 ポイント解説
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
.NET 7期待の新機能
.NET 7期待の新機能
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
REST API のコツ
REST API のコツ
More from Shuichi Tsutsumi
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Shuichi Tsutsumi
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Shuichi Tsutsumi
Depth in Depth #iOSDC
Depth in Depth #iOSDC
Shuichi Tsutsumi
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconf
Shuichi Tsutsumi
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconf
Shuichi Tsutsumi
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
Shuichi Tsutsumi
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDev
Shuichi Tsutsumi
Client-Side Deep Learning
Client-Side Deep Learning
Shuichi Tsutsumi
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"
Shuichi Tsutsumi
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Shuichi Tsutsumi
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Shuichi Tsutsumi
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyo
Shuichi Tsutsumi
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
Shuichi Tsutsumi
Core Graphics on watchOS 2
Core Graphics on watchOS 2
Shuichi Tsutsumi
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Shuichi Tsutsumi
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
Shuichi Tsutsumi
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
Shuichi Tsutsumi
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
Shuichi Tsutsumi
Apple Watch 間通信
Apple Watch 間通信
Shuichi Tsutsumi
OpenCV 3.0 on iOS
OpenCV 3.0 on iOS
Shuichi Tsutsumi
More from Shuichi Tsutsumi
(20)
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Depth in Depth #iOSDC
Depth in Depth #iOSDC
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconf
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDev
Client-Side Deep Learning
Client-Side Deep Learning
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyo
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
Core Graphics on watchOS 2
Core Graphics on watchOS 2
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
Apple Watch 間通信
Apple Watch 間通信
OpenCV 3.0 on iOS
OpenCV 3.0 on iOS
Recently uploaded
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Recently uploaded
(8)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
1.
殺しても死なないアプリ ∼Core Bluetooth の「状態の保存と復元」機能∼ 堤
修一 @shu223 2015.5.13 potatotips #17
2.
• 堤 修一(つつみ
しゅういち) • iOS専業フリーランス • ブログ『Over&Out その後』 • 著書 『iOS×BLE Core Bluetoothプログラミング』 『iOSアプリ開発 達人のレシピ100』 自己紹介
3.
制作実績(BLE関連)
4.
制作実績(BLE関連)
5.
制作実績(BLE関連)
6.
制作実績(BLE関連) Music for the
Deaf
7.
制作実績(BLE関連) Music for the
Deaf
8.
制作実績(BLE関連) Music for the
Deaf
9.
制作実績(BLE関連) Music for the
Deaf
10.
今日話すこと
11.
今日話すこと Core Bluetooth のバックグラウンド実行モードについて
12.
今日話すこと Core Bluetooth のバックグラウンド実行モードについて -
対応方法
13.
今日話すこと Core Bluetooth のバックグラウンド実行モードについて -
対応方法 - できること、できないこと
14.
今日話すこと Core Bluetooth のバックグラウンド実行モードについて -
対応方法 - できること、できないこと - 「状態の保存と復元」機能
15.
Core Bluetooth の バックグラウンド実行モード 対応方法
16.
17.
チェックマーク入れるだけ
18.
チェックマーク入れるだけ これだけでバックグラウンドでBLEによる通信が可能に
19.
バックグラウンドで何 ができるのか?
20.
基本的には何でもできる
21.
基本的には何でもできる • セントラル - スキャン -
接続 - Read、Write - Notificationの受信
22.
基本的には何でもできる • セントラル - スキャン -
接続 - Read、Write - Notificationの受信 • ペリフェラル - アドバタイズ - Read / Writeリクエストへの応答 - Notificationの送信
23.
ただし
24.
制約はある
25.
制約はある • セントラル - スキャン間隔が長くなる -
スキャン開始時のサービス指定が必須
26.
制約はある • セントラル - スキャン間隔が長くなる -
スキャン開始時のサービス指定が必須 • ペリフェラル - アドバタイズ間隔が長くなる - ローカル名がアドバタイズされなくなる - サービスUUIDがオーバーフロー領域に入る
27.
バックグラウンドでの アプリの停止
28.
バックグラウンドでアプリが 停止(終了)すると
29.
バックグラウンドでアプリが 停止(終了)すると → バックグラウンドタスクも停止する
30.
バックグラウンドでアプリが 停止(終了)すると → バックグラウンドタスクも停止する バックグラウンドでアプリが停止するケース • (メモリ消費量等の理由で)システムによって停止 •
ユーザーによって明示的に停止
31.
困る例:スマートロック
32.
困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する
33.
困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する - BLEの接続が切れることにより施錠され、次に家に帰ってきた ときに自動的に再接続して解錠できるよう、バックグラウンド で接続要求を動作させておく
34.
困る例:スマートロック • ユーザーが家を出れば自動的にドアをロックし、帰っ てくればロックを解除する - BLEの接続が切れることにより施錠され、次に家に帰ってきた ときに自動的に再接続して解錠できるよう、バックグラウンド で接続要求を動作させておく •
外出が数日間にわたり、その間にアプリが停止 → 自動的にロック解除されず、家に入れない!
35.
状態の保存と復元 (State Preservation and
Restoration)
36.
• アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能
37.
• アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能 • システムはアプリケーションを停止してメモリを解 放する際、状態の復元で必要になるオブジェクトの 情報を保存する
38.
• アプリケーションが停止していても、代わりにBLE 関係のタスクを実行するよう、システムに要求する ための機能 • システムはアプリケーションを停止してメモリを解 放する際、状態の復元で必要になるオブジェクトの 情報を保存する →
アプリを殺しても生き続ける!
39.
デモ
40.
41.
殺しても通知が届く
42.
実装方法
43.
実装方法 • バックグラウンド実行モードを有効にする
44.
実装方法 • バックグラウンド実行モードを有効にする • セントラルマネージャ
及び ペリフェラルマネージャ 初期化時にオプションを与える
45.
基本的にはこれだけです。
46.
が、
47.
「アプリの状態すべて」 が復元されるわけではない
48.
「アプリの状態すべて」 が復元されるわけではない • あくまでシステムがやってくれるのは、BLEの処理 を引き継いで、イベント発生のタイミングでアプリ をバックグラウンドで起こして当該デリゲートメソッ ドを呼ぶところまで
49.
「アプリの状態すべて」 が復元されるわけではない • あくまでシステムがやってくれるのは、BLEの処理 を引き継いで、イベント発生のタイミングでアプリ をバックグラウンドで起こして当該デリゲートメソッ ドを呼ぶところまで • その他の諸々は自分で復元してやる必要がある
50.
続きは書籍で! • konashi開発者 松村礼央さんとの共著 •
BLEについては知識ゼロからでOK! • BLEの仕様についても詳細な解説があ るので、既に案件でバリバリやって る方もオススメ • konashi等のデバイスがなくても、 iPhone同士でも試せます
Download now