Upload
gaurang
View
10
Download
0
Embed Size (px)
DESCRIPTION
Design Documents for corebluetooth fremawork ios.
Citation preview
These are confidential sessionsplease refrain from streaming, blogging, or taking pictures
Session 703
Core Bluetooth
Jason ConnCode Monkey & Radio Sponge
Brian TuckerBluetooth SIG Grand Wizard
Renaud LienhartKeeper of the Code & General Curmudgeon
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE State of the Union
Evolution of Core Bluetooth
Core Bluetooth in iOS 7
Code Demo
Tips and Best Practices
BLE: State of the Union
Brian TuckerBluetooth SIG Grand Wizard
Source ABI Research 2013
Projected BLE Accessories Shipped1 Billion+
Projected BLE Accessories Shipped
0
750
1,500
2,250
3,000
2012 2013 2014 2015 2016 2017 2018
Source ABI Research 2013
1,009,000,000 Devices
Proximity
Security
Automation
Health Care Sports/Fitness
Entertainment Toys
Pay Systems Time Services
Evolution of Core Bluetooth
Renaud LienhartKeeper of the Code & General Curmudgeon
Observer, Central, Client
CBCentralManager Discover peripherals Connect
CBPeripheral Access remote services
iOS 5
Broadcaster, Peripheral, ServeriOS 6
CBPeripheralManager Host services Advertise information Field CBCentral requests
Peripheral database caching
LE, EvolvedCore Bluetooth in iOS 7.0
Ch-ch-ch-changes
Simpler device management Smarter peripherals Performance improvementsApplication persistence Built-in services
Whats New
That is the questionTo Simulate, or Not to Simulate
Emerging market Limited hardware available
No iOS devices
Development difficult
That is the questionTo Simulate, or Not to Simulate
Exploding marketMany LE-compatible devices
All iOS hardware Macbook, Mac mini
Third-party development kits
That is the questionTo Simulate, or Not to Simulate
Exploding marketMany LE-compatible devices
All iOS hardware Macbook, Mac mini
Third-party development kits
That is the questionTo Simulate, or Not to Simulate
Exploding marketMany LE-compatible devices
All iOS hardware Most Mac hardware
Third-party development kits
Handling centrals and peripheralsSimpler Device Management
Bye, bye CoreFoundation
Handling centrals and peripheralsSimpler Device Management
@property(readonly, nonatomic) CFUUIDRef *UUID;
Bye, bye CoreFoundation
Handling centrals and peripheralsSimpler Device Management
@property(readonly, nonatomic) CFUUIDRef *UUID;
@property(readonly, nonatomic) NSUUID *identifier;
Bye, bye CoreFoundation
Handling centrals and peripheralsSimpler Device Management
@property(readonly, nonatomic) CFUUIDRef *UUID;
@property(readonly, nonatomic) NSUUID *identifier;
Identifiers created at discovery
Retrieving peripherals, todaySimpler Device Management
CBCentralManager
Retrieving peripherals, todaySimpler Device Management
CBCentralManager
Retrieving peripherals, todaySimpler Device Management
retrievePeripherals:
CBCentralManager
Retrieving peripherals, todaySimpler Device Management
didRetrievePeripherals:
retrievePeripherals:
CBCentralManager
Retrieving peripherals, todaySimpler Device Management
didRetrievePeripherals:
retrievePeripherals:
CBCentralManager
retrieveConnectedPeripherals
Retrieving peripherals, todaySimpler Device Management
didRetrievePeripherals:
retrievePeripherals:
CBCentralManager
retrieveConnectedPeripherals
didRetrieveConnectedPeripherals:
Retrieving peripheralsSimpler Device Management
CBCentralManager
Retrieving peripheralsSimpler Device Management
CBCentralManager
Retrieving peripheralsSimpler Device Management
retrievePeripheralsWithIdentifiers:
CBCentralManager
Retrieving peripheralsSimpler Device Management
retrievePeripheralsWithIdentifiers:
CBCentralManager
didRetrievePeripherals:
Retrieving peripheralsSimpler Device Management
CBCentralManager
retrievePeripheralsWithIdentifiers:
, the iOS 7 way
Retrieving peripheralsSimpler Device Management
CBCentralManager
retrievePeripheralsWithIdentifiers:
retrieveConnectedPeripheralsWithServices:
, the iOS 7 way
Retrieving peripheralsSimpler Device Management
CBCentralManager
retrievePeripheralsWithIdentifiers:
retrieveConnectedPeripheralsWithServices:
connectPeripheral:options:
, the iOS 7 way
Smarter Peripherals
Smarter Peripherals
More connection-aware@property(readonly) BOOL isConnected;
typedef NS_ENUM(NSInteger, CBPeripheralState) { CBPeripheralStateDisconnected = 0, CBPeripheralStateConnecting, CBPeripheralStateConnected };
@property(readonly) CBPeripheralState state;
Smarter Peripherals
More connection-aware@property(readonly) BOOL isConnected;
typedef NS_ENUM(NSInteger, CBPeripheralState) { CBPeripheralStateDisconnected = 0, CBPeripheralStateConnecting, CBPeripheralStateConnected };
@property(readonly) CBPeripheralState state;
Smarter Peripherals
Smarter Peripherals
Better service invalidation
Smarter Peripherals
Better service invalidation(void)peripheralDidInvalidateServices:(CBPeripheral *)
Smarter Peripherals
Better service invalidation(void)peripheralDidInvalidateServices:(CBPeripheral *)
(void)peripheral:(CBPeripheral *)didModifyServices:(NSArray *)
LE, EvolvedCore Bluetooth in iOS 7.0
Jason ConnCode Monkey & Radio Sponge
Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
Database caching, todayPerformance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
Characteristic Value190
DescriptorClient Configuration
Database caching, todayPerformance Improvements
Introduced in iOS 6 ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
Characteristic Value190
DescriptorClient Configuration
Database caching, todayPerformance Improvements
Introduced in iOS 6 Increases speed and battery life
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
Characteristic Value190
DescriptorClient Configuration
Database caching, todayPerformance Improvements
Introduced in iOS 6 Increases speed and battery life Cache services and characteristics
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
Characteristic Value190
DescriptorClient Configuration
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Cache characteristic descriptors
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Cache characteristic descriptors Caching for characteristic values?
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Cache characteristic descriptors Caching for characteristic values?
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Cache characteristic descriptors Caching for characteristic values?
Provide last-known characteristic values and descriptor values
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Characteristic Value73
Cache characteristic descriptors Caching for characteristic values?
Provide last-known characteristic values and descriptor values
Free!
Database caching, in iOS 7Performance Improvements
ServiceHeart Rate Monitor
CharacteristicHeart Rate Measurement
DescriptorClient Configuration
DescriptorClient Configuration
Characteristic Value190
Characteristic Value190
Characteristic Value73
Characteristic Value190
Characteristic Value73
Performance Improvements
Sending dataPerformance Improvements
115 BPM
Sending dataPerformance Improvements
115 BPM
Sending dataPerformance Improvements
115 BPM
Sending dataPerformance Improvements
115 BPM
Sending dataPerformance Improvements
115 BPM
Sending dataPerformance Improvements
Mon Tues Weds Thurs
58
70
43
55
96
53
26
17
Mon Tues Weds Thurs
50%
28%
14%9%
115 BPM
Sending dataPerformance Improvements
Mon Tues Weds Thurs
58
70
43
55
96
53
26
17
Mon Tues Weds Thurs
50%
28%
14%9%
Sending dataPerformance Improvements
Sending dataPerformance Improvements
Support MTU exchange request
Sending dataPerformance Improvements
Support MTU exchange requestMaximum amount of data per PDU
Sending dataPerformance Improvements
Support MTU exchange requestMaximum amount of data per PDU Send more data at a time
Sending dataPerformance Improvements
Sending data
Default MTU23 bytes
Performance Improvements
Sending data
Default MTU23 bytes
Performance Improvements
Sending data
Default MTU23 bytes
Increased MTU??? bytes
Performance Improvements
Sending data
Default MTU23 bytes
Increased MTU??? bytes
Performance Improvements
Sending dataPerformance Improvements
Sending dataPerformance Improvements
When central, ask for larger MTU
Sending dataPerformance Improvements
When central, ask for larger MTUUp to 20% increase in throughput
Sending dataPerformance Improvements
When central, ask for larger MTUUp to 20% increase in throughput Free!
Performing long-term actionsPerformance Improvements
Performing long-term actionsPerformance Improvements
Living in a multitasking worldPerforming Long-Term Actions
Living in a multitasking worldPerforming Long-Term Actions
Backgrounding modes
Living in a multitasking worldPerforming Long-Term Actions
Backgrounding modes App communicates using CoreBluetooth
Living in a multitasking worldPerforming Long-Term Actions
Backgrounding modes App communicates using CoreBluetooth App shares data using CoreBluetooth
Living in a multitasking worldPerforming Long-Term Actions
Backgrounding modes App communicates using CoreBluetooth App shares data using CoreBluetooth
Background applications can be terminated by system
Living in a multitasking worldPerforming Long-Term Actions
Backgrounding modes App communicates using CoreBluetooth App shares data using CoreBluetooth
Background applications can be terminated by system Some use-cases take hours
Our solutionPerforming Long-term Actions
Our solutionPerforming Long-term Actions
System watches application state
Our solutionPerforming Long-term Actions
System watches application stateWhen application is terminated
Our solutionPerforming Long-term Actions
System watches application stateWhen application is terminated
If cause is memory pressure
Our solutionPerforming Long-term Actions
System watches application stateWhen application is terminated
If cause is memory pressure If application is performing long-term action(s)
Our solutionPerforming Long-term Actions
System watches application stateWhen application is terminated
If cause is memory pressure If application is performing long-term action(s)
System acts as application proxy
Our solutionPerforming Long-term Actions
System watches application stateWhen application is terminated
If cause is memory pressure If application is performing long-term action(s)
System acts as application proxyWhen needed, application is re-launched
State Preservation and Restoration
State Preservation and Restoration
Opt-in
State Preservation and Restoration
Opt-in Supported by CBCentralManager and CBPeripheralManager
State Preservation and Restoration
Opt-in Supported by CBCentralManager and CBPeripheralManagerMinimal implementation
Provide unique identifier for manager Implement new delegate method
A picture is worth a thousand wordsState Preservation and Restoration
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections Peripheral subscriptions
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections Peripheral subscriptions
CBPeripheralManager
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections Peripheral subscriptions
CBPeripheralManager Advertising state
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections Peripheral subscriptions
CBPeripheralManager Advertising state Published services
A picture is worth a thousand wordsState Preservation and Restoration
Snapshot taken before termination CBCentralManager
Scanning state Pending/active connections Peripheral subscriptions
CBPeripheralManager Advertising state Published services Central subscriptions
Back from the deadState Preservation and Restoration
Back from the deadState Preservation and Restoration
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Application re-launched into background, running
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Application re-launched into background, running Re-instantiates appropriate manager object(s)
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Application re-launched into background, running Re-instantiates appropriate manager object(s) Delegate callback provides all preserved state
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Application re-launched into background, running Re-instantiates appropriate manager object(s) Delegate callback provides all preserved state Power on event
Back from the deadState Preservation and Restoration
Events that system cant handle trigger application re-launch Peripheral connects, central subscribes, notification received, etc.
Application re-launched into background, running Re-instantiates appropriate manager object(s) Delegate callback provides all preserved state Power on event Delegate callback for triggering event
DemoAdding State Preservation and Restoration Support
Jason ConnCode Monkey & Radio Sponge
Bluetooth Low Energy graduatesBuilt-in Services
Renaud LienhartKeeper of the Code & General Curmudgeon
GATT ClientBuilt-in Services
GATT ClientBuilt-in Services
HID Over GATT Profile HID, Battery, Device Information services
GATT ClientBuilt-in Services
HID Over GATT Profile HID, Battery, Device Information services
Works just like Bluetooth Classic Managed from Bluetooth Settings iOS automatically reconnects paired peripherals
GATT ServerBuilt-in Services
GATT ServerBuilt-in Services
Battery Service
GATT ServerBuilt-in Services
Battery Service Current Time Service
Accurate time and date Time zone information
GATT ServerBuilt-in Services
Battery Service Current Time Service
Accurate time and date Time zone information
One more thing
Notificationsthe problemsBuilt-in Services
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP)
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Alert Notification Service
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Alert Notification Service Very limited
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Alert Notification Service Very limited
Custom app tailored to a specific accessory
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Alert Notification Service Very limited
Custom app tailored to a specific accessory Heavyweight
Notificationsthe problemsBuilt-in Services
Message Access Profile (MAP) Developed for an automotive usage Very constrained: SMS, MMS, Email
Alert Notification Service Very limited
Custom app tailored to a specific accessory Heavyweight Data limited to what the sandbox allows
Notificationsour solutionBuilt-in Services
Notificationsour solutionBuilt-in Services
Apple Notification Center Service
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails Instant messages, Emails
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails Instant messages, Emails Calendar alerts
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails Instant messages, Emails Calendar alerts App notifications
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails Instant messages, Emails Calendar alerts App notifications
System automatically reconnects
Notificationsour solutionBuilt-in Services
Apple Notification Center Service Apple-specific Notification about any events on your phone
Incoming and Missed calls, Voicemails Instant messages, Emails Calendar alerts App notifications
System automatically reconnects Detailed specification posted on the developer portal soon
Apple Notification Center ServiceBuilt-in Services
New iMessage
New iMessageNew Social Notification, UID=1
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
Title=Jason,Msg=Beers?
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
Title=Jason,Msg=Beers?
Alert User
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
Title=Jason,Msg=Beers?
iMessage Read
Alert User
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
Title=Jason,Msg=Beers?
iMessage Read Notification Removed, UID=1
Alert User
New iMessageNew Social Notification, UID=1
GetAttributes(UID=1,Title,Msg)
Title=Jason,Msg=Beers?
iMessage Read Notification Removed, UID=1
Alert User
Dismiss Alert
Tips and Best Practices
Tips and Best Practices
Core Bluetooth needs to know if you intend to use CBPeripheralskeep a reference to them
Tips and Best Practices
Core Bluetooth needs to know if you intend to use CBPeripheralskeep a reference to them Scanning and connection requests do not time out
Tips and Best Practices
Core Bluetooth needs to know if you intend to use CBPeripheralskeep a reference to them Scanning and connection requests do not time out CBPeripheral and CBCentral conform to NSCopying and can be used as dictionary keys
Tips and Best Practices
Core Bluetooth needs to know if you intend to use CBPeripheralskeep a reference to them Scanning and connection requests do not time out CBPeripheral and CBCentral conform to NSCopying and can be used as dictionary keysDo not touch Client Configuration Characteristic Descriptors directly
Tips and Best Practices
Core Bluetooth needs to know if you intend to use CBPeripheralskeep a reference to them Scanning and connection requests do not time out CBPeripheral and CBCentral conform to NSCopying and can be used as dictionary keysDo not touch Client Configuration Characteristic Descriptors directlyDo not game the background mechanisms
Bluetooth best practices
http://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf
Apple Guidelines
Core Bluetooth Programming Guide
Finally!
Apple Guidelines
Craig KeithleyMFi & I/O Technology [email protected]
Stephen ChickiPhone [email protected]
Developer ProgramsMFi Programhttp://developer.apple.com/mfi/
More Information
Bluetooth Accessory Design Guidelineshttp://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf
Reporting Bugshttp://bugreport.apple.com
Apple Developer Forumshttps://devforums.apple.com/community/ios/core/cbthttps://devforums.apple.com/community/mac/coreos/cbt
Bluetooth Developer Sitehttp://developer.bluetooth.org
More Information
Whats New in Core Location PresidioThursday 11:30AM
Related Sessions
Designing Accessories for iOS and OS X Nob HillTuesday 10:15AM
Labs
iOS and OS X Accessories Lab Core OS Lab BThursday 9:00AM
iOS and OS X Accessories Lab Core OS Lab ATuesday 11:30AM
ProximitySecurityAutomationHealth CareSports/FitnessEntertainmentToysPay Systems
Proximity
Security
Automation
Health Care Sports/Fitness
Entertainment
Toys
Pay Systems
Proximity
Security
Automation
Health Care Sports/Fitness
Entertainment
Toys
Pay Systems
Connect the World