MultiPeer Connectivity Framework

15
MULTIPEER CONNECTIVITY YO, WANNA TALK? 1

Transcript of MultiPeer Connectivity Framework

Page 1: MultiPeer Connectivity Framework

MULTIPEER CONNECTIVITYYO, WANNA TALK?

1

Page 2: MultiPeer Connectivity Framework

MULTIPEER CONNECTIVITY

PLAN

▸ Pourquoi?

▸ Comment?

▸ Quoi?

2

Page 3: MultiPeer Connectivity Framework

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

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

MULTIPEER CONNECTIVITY

QUOI?

▸ Réseau

▸ MCAdvertiserAssistant

▸ MCNearbyServiceAdvertiser / MCNearbyServiceBrowser

▸ Peers

▸ MCSession

▸ MCPeerID

5

Page 6: MultiPeer Connectivity Framework

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

MULTIPEER CONNECTIVITY

CRÉER / REJOINDRE UNE SESSION

▸ Service Type (NSString)

▸ Peer Display Name (NSString)

▸ MCNearbyServiceAdvertiser -> MCSession

▸ MCNearbyServiceBrowser -> MCSession

7

Page 8: MultiPeer Connectivity Framework

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

MCNearbyServiceAdvertiser *advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:localPeerID discoveryInfo:nil serviceType:AppServiceType];

advertiser.delegate = self; [advertiser startAdvertisingPeer];

Advertising

MULTIPEER CONNECTIVITY 9

Page 10: MultiPeer Connectivity Framework

- (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

MCNearbyServiceBrowser *browser = [[MCNearbyServiceBrowser alloc] initWithPeer:localPeerID serviceType:AppServiceType];

browser.delegate = self;

Discovery

MULTIPEER CONNECTIVITY 11

Page 12: MultiPeer Connectivity Framework

// 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

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

MULTIPEER CONNECTIVITYDEMO

14

Page 15: MultiPeer Connectivity Framework

MULTIPEER CONNECTIVITYQUESTIONS?

15