MultiPeer Connectivity Framework
-
Upload
cocoaheads-france -
Category
Software
-
view
4.457 -
download
0
Transcript of MultiPeer Connectivity Framework
MULTIPEER CONNECTIVITYYO, WANNA TALK?
1
MULTIPEER CONNECTIVITY
PLAN
▸ Pourquoi?
▸ Comment?
▸ Quoi?
2
MULTIPEER CONNECTIVITY
POURQUOI?
▸ Mobilité accrue
▸ Hétérogénéité des accès plutôt que des méthodes
▸ Zéro configuration
3
MULTIPEER CONNECTIVITY
BT Advertisement / Discovery
Data Exchange
Get Ad-hoc WiFi Settings & connect Setup Ad-hoc WiFi Network
Create Session
Join Session
Session Data Exchange
COMMENT?
▸ “Discovery” Bluetooth
▸ Débit et stabilité WiFi
▸ Zéroconf / Bonjour
4
MULTIPEER CONNECTIVITY
QUOI?
▸ Réseau
▸ MCAdvertiserAssistant
▸ MCNearbyServiceAdvertiser / MCNearbyServiceBrowser
▸ Peers
▸ MCSession
▸ MCPeerID
5
MULTIPEER CONNECTIVITY
CAVEATS
▸ Limitations réseau (évidemment) : portée, débit, etc
▸ Une session contient au plus 8 participants
▸ Peu de fonctions avancées
▸ Mac - iPhone - iPad - Watch - TV
6
MULTIPEER CONNECTIVITY
CRÉER / REJOINDRE UNE SESSION
▸ Service Type (NSString)
▸ Peer Display Name (NSString)
▸ MCNearbyServiceAdvertiser -> MCSession
▸ MCNearbyServiceBrowser -> MCSession
7
static NSString * const AppServiceType = @“chat-service";
NSString *dName = [[UIDevice currentDevice] name];
MCPeerID *localPeerID = [[MCPeerID alloc] initWithDisplayName:dName];
Service Type & Local Peer
MULTIPEER CONNECTIVITY 8
MCNearbyServiceAdvertiser *advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:localPeerID discoveryInfo:nil serviceType:AppServiceType];
advertiser.delegate = self; [advertiser startAdvertisingPeer];
Advertising
MULTIPEER CONNECTIVITY 9
- (void) advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler: (void(^)(BOOL accept, MCSession *session))invitationHandler { if(self.session == nil) { self.session = [[MCSession alloc] initWithPeer:localPeerID securityIdentity:nil encryptionPreference:MCEncryptionNone]; }
invitationHandler(YES, self.session); }
Advertising Attack of The Clones
MULTIPEER CONNECTIVITY 10
MCNearbyServiceBrowser *browser = [[MCNearbyServiceBrowser alloc] initWithPeer:localPeerID serviceType:AppServiceType];
browser.delegate = self;
Discovery
MULTIPEER CONNECTIVITY 11
// optional GUI MCBrowserViewController *browserViewController = [[MCBrowserViewController alloc] initWithBrowser:browser session:session]; browserViewController.delegate = self;
[self presentViewController:browserViewController animated:YES completion: ^{ [browser startBrowsingForPeers]; }];
Discovery Harder
MULTIPEER CONNECTIVITY 12
MULTIPEER CONNECTIVITY
MCSESSION IS LIVE!
▸ Message == NSData
▸ Blobs
▸ NSSecureCoding Objects
▸ Contenu d’une ressource par une NSURL (file ou http)
▸ NSInputStream/NSOutputStream (ouep)
13
MULTIPEER CONNECTIVITYDEMO
14
MULTIPEER CONNECTIVITYQUESTIONS?
15