SlideShare a Scribd company logo
Practical Core Bluetooth
in IoT & Wearable projects
Shuichi Tsutsumi @shu223
iOS Freelancer
UIKonf 2016 - Berlin
Overview
• Basics of Core Bluetooth
• Practical Core Bluetooth
Bluetooth Low Energy?
Bluetooth Low Energy (BLE)
• Wireless technology
- no network infrastructure required
Bluetooth Low Energy (BLE)
• Wireless technology
- no network infrastructure required
Wi-Fi
Bluetooth Low Energy (BLE)
• Wireless technology
- no network infrastructure required
BLE
• Low energy
• Low energy
• NOT compatible with Classic BT
• Low energy
• NOT compatible with Classic BT
• Uses 2.4 GHz radio frequencies
• Low energy
• NOT compatible with Classic BT
• Uses 2.4 GHz radio frequencies
• Marketed by the Bluetooth SIG
• Low energy
• NOT compatible with Classic BT
• Uses 2.4 GHz radio frequencies
• Marketed by the Bluetooth SIG
• etc…
• Low energy
• NOT compatible with Classic BT
• Uses 2.4 GHz radio frequencies
• Marketed by the Bluetooth SIG
• etc…
The most important thing
for
iOS developers
The API ‘Core Bluetooth’
is open for developers
The API ‘Core Bluetooth’
is open for developers
• API for Classic BT is NOT open.
- Requires MFi certification.
BLE is almost the ONLY way
to enable iOS apps to communicate
with external hardware
without infrastructure or MFi.
Basics of
Core Bluetooth
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Moff Band Moff App
Moff Band Moff App
BLE Connection
Moff Band Moff App
BLE Connection
Sensors
- Gyroscope
- Accelerometer
Moff Band Moff App
Sensor Data
BLE Connection
Sensors
- Gyroscope
- Accelerometer
Moff Band Moff App
Sensor Data
BLE Connection
Sensors
- Gyroscope
- Accelerometer
Analyze sensor data
Moff Band Moff App
Sensor Data
BLE Connection
Sensors
- Gyroscope
- Accelerometer
Analyze sensor data
Recognize
- Gesture
- Posture
Moff Band Moff App
Sensor Data
BLE Connection
Sensors
- Gyroscope
- Accelerometer
Analyze sensor data
Recognize
- Gesture
- Posture
Play sounds
Sensor Data
How sensor data is sent with Core Bluetooth
BLE Connection
Step 1. Scan
Step 1. Scan: Search for nearby BLE devices
Step 1. Scan: Search for nearby BLE devices
Step 1. Scan
Advertise
: Search for nearby BLE devices
Scan
Step 1. Scan
Advertise
: Search for nearby BLE devices
Scan
Step 1. Scan
Advertise
: Search for nearby BLE devices
centralManager.scanForPeripheralsWithServices(nil, options: nil)
Scan
Step 1. Scan
Advertise
Discover
: Search for nearby BLE devices
Scan
Step 1. Scan
Advertise
Discover
: Search for nearby BLE devices
func centralManager(central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(“Discovered a BLE device!”)
}
Scan
Step 1. Scan
Advertise
Discover
: Search for nearby BLE devices
func centralManager(central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(“Discovered a BLE device!”)
}
Central
Scan
Step 1. Scan
Advertise
Discover
: Search for nearby BLE devices
func centralManager(central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(“Discovered a BLE device!”)
}
Peripheral Central
Step 2. Connect
Connect
Step 2. Connect
Connect
Step 2. Connect
centralManager.connectPeripheral(peripheral, options: nil)
Connect
Step 2. Connect
centralManager.connectPeripheral(peripheral, options: nil)
func centralManager(central: CBCentralManager,
didConnectPeripheral peripheral: CBPeripheral)
{
print(“Connected!”)
}
Step 3. Subscribe
Step 3. Subscribe: Ready to receive data
Step 3. Subscribe: Ready to receive data
GATT = Generic Attribute Profile
Moff Service
xx Service
Step 3. Subscribe: Ready to receive data
GATT = Generic Attribute Profile
Moff Service
xx Service
Button Characteristic
xx Characteristic
Sensor Characteristic
Step 3. Subscribe: Ready to receive data
GATT = Generic Attribute Profile
Moff Service
xx Service
Button Characteristic
xx Characteristic
Sensor Characteristic
Subscribe
(Request to be notified)
Step 3. Subscribe: Ready to receive data
GATT = Generic Attribute Profile
Moff Service
xx Service
Button Characteristic
xx Characteristic
Sensor Characteristic
Subscribe
(Request to be notified)
Step 3. Subscribe: Ready to receive data
GATT = Generic Attribute Profile
peripheral.setNotifyValue(true, forCharacteristic: c)
Step 4. Notify
Moff Service
Sensor Characteristic
xxxx Characteristic
Step 4. Notify
Moff Service
Sensor Characteristic
xxxx Characteristic
Update the value
Step 4. Notify
Notify
subscribers
Moff Service
Sensor Characteristic
xxxx Characteristic
Update the value
Step 4. Notify
Notify
subscribers
Moff Service
Sensor Characteristic
xxxx Characteristic
Update the value
func peripheral(peripheral: CBPeripheral,
didUpdateValueForCharacteristic characteristic: CBCharacteristic,
error: NSError?)
{
print(“Received sensor data!”)
}
Step 4. Notify
Notify
subscribers
Moff Service
Sensor Characteristic
xxxx Characteristic
Update the value
func peripheral(peripheral: CBPeripheral,
didUpdateValueForCharacteristic characteristic: CBCharacteristic,
error: NSError?)
{
print(“Received sensor data!”)
}
Hardware Side?
Hardware Side?
I’m sorry, I don’t know…
BLE
BLE
iOS Engineer
BLE
iOS Engineer
BLE
Firmware Engineer iOS Engineer
BLE
Firmware Engineer iOS Engineer
HW Projects
I’ve worked on
as an iOS engineer
Wheelchair ‘WHILL’
Wheelchair ‘WHILL’
Wearable Walkie-Talkie
‘BONX’
Wearable Walkie-Talkie
‘BONX’
Wearable Walkie-Talkie
‘BONX’
Group conversation system with VoIP
- Detects the human voice
- Cuts out all background noise
→ Can be used even in areas with poor coverage!
Group conversation system with VoIP
- Detects the human voice
- Cuts out all background noise
BLE for BONX
BLE for BONX
BLE for BONX
IoT for Cars ‘SmartDrive’
Printable Open-Source Humanoid “PLEN2”
Music for the Deaf
Daito Manabe/Motoi Ishibashi/Teruoka Masaki/Shuichi Tsutsumi x SOUL FAMILY
Music for the Deaf
Daito Manabe/Motoi Ishibashi/Teruoka Masaki/Shuichi Tsutsumi x SOUL FAMILY
iPhone
Music for the Deaf
Daito Manabe/Motoi Ishibashi/Teruoka Masaki/Shuichi Tsutsumi x SOUL FAMILY
Electronic Stimulation DeviceiPhone
Music for the Deaf
Daito Manabe/Motoi Ishibashi/Teruoka Masaki/Shuichi Tsutsumi x SOUL FAMILY
Commands
Electronic Stimulation DeviceiPhone
Music for the Deaf
Daito Manabe/Motoi Ishibashi/Teruoka Masaki/Shuichi Tsutsumi x SOUL FAMILY
Practical Core Bluetooth
Defining GATT
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send sensor data
Foo Service
Sensor Data Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bar Service
xx Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: acc x, acc y, acc z, gyro x, gyro y, gyro z (2bytes for each)
xx Characteristic
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
Button interactions
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
Button interactions
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
Button interactions
GATT to send button interactions
Foo Service
Button Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Notify
Value: 0x01 or 0x00
Button interactions
0x01: Pushed
0x00: Released
GATT for remote control
Foo Service
Remote Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Write
Value: Horizontal (-100 ~ 100), Vertical (-100 ~ 100)
GATT for remote control
Foo Service
Remote Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Write
Value: Horizontal (-100 ~ 100), Vertical (-100 ~ 100)
GATT for remote control
Foo Service
Remote Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Write
Value: Horizontal (-100 ~ 100), Vertical (-100 ~ 100)
values
GATT for remote control
Foo Service
Remote Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Write
Value: Horizontal (-100 ~ 100), Vertical (-100 ~ 100)
values
GATT for remote control
Foo Service
Remote Control Characteristic
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties: Write
Value: Horizontal (-100 ~ 100), Vertical (-100 ~ 100)
values
How to define GATT
1. Create UUID for the service & characteristic
2. Define the properties (Read, Notify, Write, etc.)
Peripheral → Central: Notify 

Central → Peripheral: Write
3. Define the value format
Usually limited to 20 bytes
$ uuidgen
CEEA31BC-BEAC-4A78-B7ED-FC96B6254D4C
Reference:
GATT profiles by Bluetooth SIG
Defining background
behaviors
Background behaviors on iOS
• Very limited
- Listening to music
- Getting location data
- Downloading data
Imagine
If BLE didn’t work in the
background…
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
You would have to always keep the app
in the foreground, while snowboarding!
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
You would have to launch the app
whenever you go driving!
What functions can be used
in the background?
What functions can be used
in the background?
• Scanning peripherals
What functions can be used
in the background?
• Scanning peripherals
• Connecting with peripherals
What functions can be used
in the background?
• Scanning peripherals
• Connecting with peripherals
• Reading characteristics’ value
What functions can be used
in the background?
• Scanning peripherals
• Connecting with peripherals
• Reading characteristics’ value
• Writing characteristics’ value
What functions can be used
in the background?
• Scanning peripherals
• Connecting with peripherals
• Reading characteristics’ value
• Writing characteristics’ value
• Receiving notifications
What functions can be used
in the background?
• Scanning peripherals
• Connecting with peripherals
• Reading characteristics’ value
• Writing characteristics’ value
• Receiving notifications
Almost all functions can be used
even in the background!
How to support
background mode
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Just check this box!
Limitations
Limitations
• Longer intervals for scanning
Limitations
• Longer intervals for scanning
• Must explicitly specify one or more services to scan
Limitations
• Longer intervals for scanning
• Must explicitly specify one or more services to scan
• CBCentralManagerOptionShowPowerAlertKey option is
ignored
Limitations
• Longer intervals for scanning
• Must explicitly specify one or more services to scan
• CBCentralManagerOptionShowPowerAlertKey option is
ignored
Resources
- Core Bluetooth Programming Guide
- Core Bluetooth Framework Reference (also in headers)
If the app in the background
is killed by the system…
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
State Preservation and Restoration
State Preservation and Restoration
The system takes over the BLE tasks
even after the app is killed.
State Preservation and Restoration
The system takes over the BLE tasks
even after the app is killed.
- Preserves the state of the app’s central managers
and continues the BLE tasks on their behalf.
State Preservation and Restoration
The system takes over the BLE tasks
even after the app is killed.
- Preserves the state of the app’s central managers
and continues the BLE tasks on their behalf.
- Relaunches the app into the background and calls
the corresponding delegate method.
State Preservation and Restoration
The system takes over the BLE tasks
even after the app is killed.
- Preserves the state of the app’s central managers
and continues the BLE tasks on their behalf.
- Relaunches the app into the background and calls
the corresponding delegate method.
→ The app can handle BLE events!
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
• The app is killed by the system
• The app is killed by the system
• The user pushes the button on the
peripheral device
• The app is killed by the system
• The user pushes the button on the
peripheral device
• The system receives the notification
• The app is killed by the system
• The user pushes the button on the
peripheral device
• The system receives the notification
• The app is relaunched in the BG and
the delegate method is called.
func peripheral(peripheral: CBPeripheral,
didUpdateValueForCharacteristic characteristic: CBCharacteristic,
error: NSError?)
{
print(“Received the characteristic data!”)
}
• The app is killed by the system
• The user pushes the button on the
peripheral device
• The system receives the notification
• The app is relaunched in the BG and
the delegate method is called.
func peripheral(peripheral: CBPeripheral,
didUpdateValueForCharacteristic characteristic: CBCharacteristic,
error: NSError?)
{
print(“Received the characteristic data!”)
}
• The app is killed by the system
• The user pushes the button on the
peripheral device
• The system receives the notification
• The app is relaunched in the BG and
the delegate method is called.
The app can process the button interaction!
Implementation
Implementation
• Add an option when initializing the
CBCentralManager object.
let options = [
CBCentralManagerOptionRestoreIdentifierKey: "somekey"
]
centralManager = CBCentralManager(
delegate: self,
queue: queue,
options: options)
Implementation
• Implement the delegate method which is called when
the app is restored.
func centralManager(central: CBCentralManager,
willRestoreState dict: [String : AnyObject])
{
print("Restored")
}
Testing the restoration
Testing the restoration
• Kill the app as if it was killed by the iOS
kill(getpid(), SIGKILL);
How to test
without HW prototypes
Did the HW prototypes exist when develop the apps?
Projects HW prototypes existed?
Moff YES
WHILL NO
BONX NO
SmartDrive YES
PLEN2 NO
Music for the Deaf NO
Development Kit
Development Kit
BLE Module
Development Kit
BLE Module
Display
Development Kit
BLE Module
Display
USB interface
Development Kit
BLE Module
Display
USB interface
Battery box
Development Kit
Can start development without
creating a circuit ourselves
BLE Module
Display
USB interface
Battery box
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Development Kit
Development Kit App
Development Kit App
BLE
Horizontal (-100~100) / Vertical (-100~100)
Development Kit App
BLE
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Emulator App
Emulator App
• Develop another iOS app as
the alternative to the
peripheral device
Emulator App
• Develop another iOS app as
the alternative to the
peripheral device
• Use CBPeripheralManager
Emulator App
• Develop another iOS app as
the alternative to the
peripheral device
• Use CBPeripheralManager
• Easier for iOS engineers
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
=
Multi-Function Control
• Single Tap
• Double Tap
• Long Press
• Very Long Press
=
Troubleshooting
Can’t find the peripheral
Scan
?
Can’t connect
Find
Can’t connect
Connect
×
• Connection dropped
• Connection dropped
• Can’t discover services or characteristics
• Connection dropped
• Can’t discover services or characteristics
• Fail to write
• Connection dropped
• Can’t discover services or characteristics
• Fail to write
• Incorrect characteristic values
• Connection dropped
• Can’t discover services or characteristics
• Fail to write
• Incorrect characteristic values
• Incorrect behaviors in the background
• Connection dropped
• Can’t discover services or characteristics
• Fail to write
• Incorrect characteristic values
• Incorrect behaviors in the background
• etc…
Identify which side
the problem is on
Is the problem on the central side or on the peripheral side?
→ Compare with another iOS app like ‘LightBlue’
Can’t find the peripheral
• Scanning, but can’t find the peripheral device
Can’t find the peripheral
• Scanning, but can’t find the peripheral device
Scan
Can’t find the peripheral
• Scanning, but can’t find the peripheral device
Scan
but ‘didDiscover’
method isn’t called
Can’t find the peripheral
• Scan with another iOS app
Scan
Can’t find the peripheral
• Scan with another iOS app
Scan
Discovered peripherals
Can’t connect, etc.
Connect
Can’t connect, etc.
Connect
Services & Characteristics
Other debugging tools
Bluetooth Explorer
Bluetooth Explorer
An OS X app made by Apple
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Low Energy Devices
Low Energy Devices
Scan, Connect
Low Energy Devices
Scan, Connect Details of services and characteristics
Low Energy Devices
Scan, Connect Details of services and characteristics
Write, Read,
Register Notify (Subscribe)
func centralManager(
central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(advertisementData)
}
func centralManager(
central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(advertisementData)
}
Filtered by iOS!
func centralManager(
central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(advertisementData)
}
Filtered by iOS! → Can’t see all of the advertisement data
func centralManager(
central: CBCentralManager,
didDiscoverPeripheral peripheral: CBPeripheral,
advertisementData: [String : AnyObject],
RSSI: NSNumber!)
{
print(advertisementData)
}
Filtered by iOS!
e.g. Can’t see the ‘Manufacture Data’ field of iBeacon
→ Can’t see all of the advertisement data
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Not filtered
→ Can see the ‘Manufacture Data’ field of iBeacon
Packet Logger
Packet Logger
An OS X app made by Apple
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
How to get
How to get
How to get
Download ‘Hardware IO Tools for Xcode’
How to get
Download ‘Hardware IO Tools for Xcode’
How to get
Download ‘Hardware IO Tools for Xcode’
How to get
Download ‘Hardware IO Tools for Xcode’
App Review
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
MSRP $13,995
Costing too much
Not enough devices when submitting
Videos for review
Videos for review
• Show how the app works with the peripheral device
Videos for review
• Show how the app works with the peripheral device
• Not need to be cool!
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
• Shoot with iPhone
• Shoot with iPhone
• Edit with iMovie
Recap
• What is Bluetooth Low Energy?
• Basics of Core Bluetooth with an actual product
• Practical Core Bluetooth with specific examples
- Defining GATT
- Defining background behaviors
- Testing without HW prototypes
- Troubleshooting
- App Review
束:31mm
表 4 表 1
iOS×BLE
Core Bluetooth
プログラミング
iOS×BLECoreBluetooth
プ
ロ
グ
ラ
ミ
ン
グ
堤
修
一
松
村
礼
央
=
著
堤修一×松村礼央=著
Shuichi TSUTSUMI×Reo MATSUMURA
iOS×BLE
Core Bluetooth Programming
iOS×BLE
定価:本体4,000円(税別)
Resources
• 500 pages about
iOS x BLE
• Japanese only
Resources
• Getting Started with Bluetooth Low Energy
- Covers large area of BLE
• Core Bluetooth Programming Guide
- Good to know the overview of Core Bluetooth
• Core Bluetooth Framework Reference
- Details of Core Bluetooth
• Bluetooth Accessory Design Guidelines for Apple Products
- For HW side, but helpful also for iOS engineers to know specs
or limitations due to HW side such as connection intervals.
Resources
• WWDC 2012 - Session 703 - Core Bluetooth 101
- Helpful to know about BLE
• WWDC 2012 - Session 705 - Advanced Core Bluetooth
- Connection interval, Caching, etc…
• WWDC 2013 - Session 703 - Core Bluetooth
- Retrieving peripherals, State preservation & restoration etc..
- Includes advanced and detailed information
• Bluetooth Core Specification by Bluetooth SIG
- The official specification / Total 2000 pages…
Thank you!
Shuichi Tsutsumi - iOS Freelancer
• Twitter: @shu223
• GitHub: shu223
• Blog: https://medium.com/@shu223/
• Email: shuichi0526@gmail.com

More Related Content

PDF
Building iOS apps using "Bluetooth Low Energy"
PDF
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
PDF
BTLE (Bluetooth Low Energy) and CoreBluetooth
PDF
Bluetooth Low Energy Unveiled
PDF
Real time sensing with bluetooth smart
PDF
A Brief Introduction to Bluetooth Low Energy (BLE) on iOS
PDF
Interacting with Intel Edison
PPTX
Intel Edison: Beyond the Breadboard
Building iOS apps using "Bluetooth Low Energy"
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
BTLE (Bluetooth Low Energy) and CoreBluetooth
Bluetooth Low Energy Unveiled
Real time sensing with bluetooth smart
A Brief Introduction to Bluetooth Low Energy (BLE) on iOS
Interacting with Intel Edison
Intel Edison: Beyond the Breadboard

What's hot (19)

PPTX
Lab Handson: Power your Creations with Intel Edison!
PDF
How to Hack Edison
PPTX
The A2530x24xx AIR Module for ZigBee Standard Applications
PDF
IoT Getting Started with Intel® IoT Devkit
PDF
Embedded Objective-C
PPTX
Java Device I/O at Raspberry PI to Build a Candy Vending Machine
PPTX
PPTX
Birdwatching using a Raspberry pi, Azure IoT Hub and Cognitive services
PPTX
Building your own RC Car with Raspberry Pi
PDF
Introduction to RIoT Hardware Kits & ESP32 Programming [Road to RIoT 2017]
PDF
Overview of the Intel® Internet of Things Developer Kit
ODP
Raspberry Pi introduction
PDF
Building Modern Audio Apps with AVAudioEngine
PPTX
Introduction to Internet of Things Hardware
PDF
My presentation raspberry pi
PDF
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
PDF
Offline Voice Control
PDF
PyCon_India_2017_MicroPython_Ayan
PDF
The abcs of gpu
Lab Handson: Power your Creations with Intel Edison!
How to Hack Edison
The A2530x24xx AIR Module for ZigBee Standard Applications
IoT Getting Started with Intel® IoT Devkit
Embedded Objective-C
Java Device I/O at Raspberry PI to Build a Candy Vending Machine
Birdwatching using a Raspberry pi, Azure IoT Hub and Cognitive services
Building your own RC Car with Raspberry Pi
Introduction to RIoT Hardware Kits & ESP32 Programming [Road to RIoT 2017]
Overview of the Intel® Internet of Things Developer Kit
Raspberry Pi introduction
Building Modern Audio Apps with AVAudioEngine
Introduction to Internet of Things Hardware
My presentation raspberry pi
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
Offline Voice Control
PyCon_India_2017_MicroPython_Ayan
The abcs of gpu
Ad

Viewers also liked (19)

PDF
おもしろく働くための「わらしべ長者方式」
PDF
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
PDF
Server Side Swift with Swag
PDF
Client-Side Deep Learning
PDF
How Hot is My Coffee? Sensors, Core Bluetooth, and Swift!
PDF
オープンソースエコシステム #demodaytokyo
PDF
Beyond JSON with FlatBuffers
PPTX
How to teach grammar from examples ( Inductive .Approach ).
PPT
How to teach grammar (Inductive teaching)
PPTX
Basics of English Grammar
PPTX
The Greater Dublin Area (GDA region)
PDF
Introducing Swift - and the Sunset of Our Culture?
PDF
Hacking the Internet of Things
PPT
Tech Comms Text Nf
PPTX
Grammar: Use of Hyphens In Medical Writing
PDF
SOC Peripheral Components & SOC Tools
PDF
UI/UX に影響の大きい watchOS 2 の新機能 3つ
PPTX
『人事の定量分析』(林 明文)のエッセンス
PDF
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
おもしろく働くための「わらしべ長者方式」
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Server Side Swift with Swag
Client-Side Deep Learning
How Hot is My Coffee? Sensors, Core Bluetooth, and Swift!
オープンソースエコシステム #demodaytokyo
Beyond JSON with FlatBuffers
How to teach grammar from examples ( Inductive .Approach ).
How to teach grammar (Inductive teaching)
Basics of English Grammar
The Greater Dublin Area (GDA region)
Introducing Swift - and the Sunset of Our Culture?
Hacking the Internet of Things
Tech Comms Text Nf
Grammar: Use of Hyphens In Medical Writing
SOC Peripheral Components & SOC Tools
UI/UX に影響の大きい watchOS 2 の新機能 3つ
『人事の定量分析』(林 明文)のエッセンス
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Ad

Similar to Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016 (20)

PDF
PicoScenes Tutorial @ CPS-IOT Week 2022
PDF
Core bluetooth @ cocohead
PDF
DEFCON 23 - Ian Latter - remote access the apt
PDF
Fuzzing malware for fun & profit. Applying Coverage-Guided Fuzzing to Find Bu...
PDF
JAM805 - Beyond the Device
PPT
Ble boise codecamp
PPTX
Bluetooth [in]security
PPTX
Bluetooth insecurity
PPTX
Hack your business android+beacons+big data
PPT
Wi fi technology & wap
PPTX
Controlling Bluetooth Low Energy Devices
PDF
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
PPTX
2015 01 24 Coding4Fun at Tajamar
PDF
BeaStreamer: a new platform for Multi-Sensors Data Acquisition in Wearable Co...
PDF
Fusioninventory project FOSDEM 2011
PDF
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
PDF
Getting Started with iBeacons (Designers of Things 2014)
PDF
Lukas Apa - Hacking Robots Before SkyNet
PDF
0xdroid -- community-developed Android distribution by 0xlab
PDF
Brillo/Weave Part 1: High Level Introduction
PicoScenes Tutorial @ CPS-IOT Week 2022
Core bluetooth @ cocohead
DEFCON 23 - Ian Latter - remote access the apt
Fuzzing malware for fun & profit. Applying Coverage-Guided Fuzzing to Find Bu...
JAM805 - Beyond the Device
Ble boise codecamp
Bluetooth [in]security
Bluetooth insecurity
Hack your business android+beacons+big data
Wi fi technology & wap
Controlling Bluetooth Low Energy Devices
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
2015 01 24 Coding4Fun at Tajamar
BeaStreamer: a new platform for Multi-Sensors Data Acquisition in Wearable Co...
Fusioninventory project FOSDEM 2011
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
Getting Started with iBeacons (Designers of Things 2014)
Lukas Apa - Hacking Robots Before SkyNet
0xdroid -- community-developed Android distribution by 0xlab
Brillo/Weave Part 1: High Level Introduction

More from Shuichi Tsutsumi (20)

PDF
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
PDF
エンジニアという仕事を楽しみ続けるためのキャリア戦略
PDF
Depth in Depth #iOSDC
PDF
UIImageView vs Metal [日本語版] #tryswiftconf
PDF
UIImageView vs Metal #tryswiftconf
PDF
飛び道具ではないMetal #iOSDC
PDF
Deep Learning on iOS #360iDev
PDF
Core Image Tips & Tricks in iOS 9
PDF
Core Graphics on watchOS 2
PDF
iOS 9 の新機能 Core Image 編
PDF
watchOS 2 新機能の細かい話
PDF
Apple Watch 間通信
PDF
OpenCV 3.0 on iOS
PDF
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
PDF
WatchKitを実際にさわってみてわかったこと
PDF
iOSエンジニア in ハードウェア・プロジェクト
PDF
カヤックを退職すべきではない3つの理由
PDF
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
PDF
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
PDF
Tantan sumo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Depth in Depth #iOSDC
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal #tryswiftconf
飛び道具ではないMetal #iOSDC
Deep Learning on iOS #360iDev
Core Image Tips & Tricks in iOS 9
Core Graphics on watchOS 2
iOS 9 の新機能 Core Image 編
watchOS 2 新機能の細かい話
Apple Watch 間通信
OpenCV 3.0 on iOS
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
WatchKitを実際にさわってみてわかったこと
iOSエンジニア in ハードウェア・プロジェクト
カヤックを退職すべきではない3つの理由
BluetoothLEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Tantan sumo

Recently uploaded (20)

PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPT
Teaching material agriculture food technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Encapsulation theory and applications.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Big Data Technologies - Introduction.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Teaching material agriculture food technology
MIND Revenue Release Quarter 2 2025 Press Release
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Understanding_Digital_Forensics_Presentation.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
The Rise and Fall of 3GPP – Time for a Sabbatical?
Encapsulation theory and applications.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Mobile App Security Testing_ A Comprehensive Guide.pdf
Empathic Computing: Creating Shared Understanding
Chapter 3 Spatial Domain Image Processing.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016