MultiPeer Connectivity Framework
-
Upload
cocoaheads-france -
Category
Software
-
view
4.457 -
download
0
Transcript of MultiPeer Connectivity Framework
![Page 1: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/1.jpg)
MULTIPEER CONNECTIVITYYO, WANNA TALK?
1
![Page 2: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/2.jpg)
MULTIPEER CONNECTIVITY
PLAN
▸ Pourquoi?
▸ Comment?
▸ Quoi?
2
![Page 3: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/3.jpg)
MULTIPEER CONNECTIVITY
POURQUOI?
▸ Mobilité accrue
▸ Hétérogénéité des accès plutôt que des méthodes
▸ Zéro configuration
3
![Page 4: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/4.jpg)
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
![Page 5: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/5.jpg)
MULTIPEER CONNECTIVITY
QUOI?
▸ Réseau
▸ MCAdvertiserAssistant
▸ MCNearbyServiceAdvertiser / MCNearbyServiceBrowser
▸ Peers
▸ MCSession
▸ MCPeerID
5
![Page 6: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/6.jpg)
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
![Page 7: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/7.jpg)
MULTIPEER CONNECTIVITY
CRÉER / REJOINDRE UNE SESSION
▸ Service Type (NSString)
▸ Peer Display Name (NSString)
▸ MCNearbyServiceAdvertiser -> MCSession
▸ MCNearbyServiceBrowser -> MCSession
7
![Page 8: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/8.jpg)
static NSString * const AppServiceType = @“chat-service";
NSString *dName = [[UIDevice currentDevice] name];
MCPeerID *localPeerID = [[MCPeerID alloc] initWithDisplayName:dName];
Service Type & Local Peer
MULTIPEER CONNECTIVITY 8
![Page 9: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/9.jpg)
MCNearbyServiceAdvertiser *advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:localPeerID discoveryInfo:nil serviceType:AppServiceType];
advertiser.delegate = self; [advertiser startAdvertisingPeer];
Advertising
MULTIPEER CONNECTIVITY 9
![Page 10: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/10.jpg)
- (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
![Page 11: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/11.jpg)
MCNearbyServiceBrowser *browser = [[MCNearbyServiceBrowser alloc] initWithPeer:localPeerID serviceType:AppServiceType];
browser.delegate = self;
Discovery
MULTIPEER CONNECTIVITY 11
![Page 12: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/12.jpg)
// 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
![Page 13: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/13.jpg)
MULTIPEER CONNECTIVITY
MCSESSION IS LIVE!
▸ Message == NSData
▸ Blobs
▸ NSSecureCoding Objects
▸ Contenu d’une ressource par une NSURL (file ou http)
▸ NSInputStream/NSOutputStream (ouep)
13
![Page 14: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/14.jpg)
MULTIPEER CONNECTIVITYDEMO
14
![Page 15: MultiPeer Connectivity Framework](https://reader037.fdocuments.net/reader037/viewer/2022092623/587483491a28ab4a758baacb/html5/thumbnails/15.jpg)
MULTIPEER CONNECTIVITYQUESTIONS?
15