Con l’arrivo di iOS 8, Apple ha introdotto una nuovo concetto nella programmazione, quella delle estensioni. Ne sono state messe a disposizione diverse direttamente nella prima release di iOS (ne abbiamo parlato qua), mentre un altro tipo di estensione sarà disponibile con l’arrivo dell’Apple Watch; tutte le app per l’orologio di Cupertino, saranno delle estensioni all’applicazione nativa di iOS.
Comunicare tra app ed estensioni non è stato reso comodo da Apple, che ha lasciato gli user defaults come modo più semplice per condividere informazioni. Per agevolare, però, la comunicazione Mutual Mobile ha sviluppato una libreria: MMWormhole. Tramite questa libreria si ha disposizione comunicazione in realtime tra app ed estensioni usando pochissime linee di codice.
Per usarlo è necessario inizializzare un oggetto MMWormhole nel seguente modo:
self.wormhole = [[MMWormhole alloc] initWithApplicationGroupIdentifier:@"group.com.mutualmobile.wormhole" optionalDirectory:@"wormhole"];
L’ applicationGroupIdentifier deve essere impostato nelle impostazioni del progetto, creando di fatto uno spazio dove i dati possono fluire tra app ed estensioni.
Successivamente per passare un oggetto si usa il seguente codice:
[self.wormhole passMessageObject:@{@"titleString" : title}
identifier:@"messageIdentifier"];
Se invece si vuole ritrovare un oggetto il codice è questo:
id messageObject = [self.wormhole messageWithIdentifier:@"messageIdentifier"];
Il procedimento è simile a quello che succede con NSUserDefaults. Il grande vantaggio, però, è che si può impostare una notifica, con relativa esecuzione di codice, ogni qual volta un valore relativo ad una determinata chiave cambia:
[self.wormhole listenForMessageWithIdentifier:@"messageIdentifier"
listener:^(id messageObject) {
// Do Something
}];
Questo permette di avere una comunicazione realtime tra app ed estensione, che sarà molto comoda con le applicazioni relative ad Apple Watch, ma questo lo scopriremo in futuro.
Maggiori informazioni sulla libreria, che si installa anche tramite Cocoapods, nel blog ufficiale o nella repo su GitHub al seguente indirizzo.













No Responses to “MMWormhole: comunicazione in realtime tra App ed estensioni”