2016-08-01 11 views
1

Je développe une application Apple Watch. Je peux envoyer des données à Apple Watch à partir de l'iPhone lorsqu'un événement spécifique se produit sur iPhone. Cependant, je veux regarder pour récupérer des données quand il commence à courir. Comment dois-je procéder avec le problème? Quel est le moyen le plus efficace de le faire?WatchOS récupérant des données depuis l'iPhone

Répondre

4

WatchConnectivity

D'abord les deux classes qui sont censés communiquer entre eux (iOS et watchos) doivent se conformer à la <WCSessionDelegate> et #import le WatchConnectivity cadre

Avant de pouvoir envoyer des données vous devez vérifier si votre appareil est capable d'envoyer des données

if ([WCSession isSupported]) { 
     WCSession *session = [WCSession defaultSession]; 
     session.delegate = self; 
     [session activateSession]; 
     NSLog(@"WCSession is supported"); 
} 

Ensuite, si vous souhaitez utiliser « messagerie interactive » (sen API dMessage) vous aurez besoin de voir si l'autre appareil est accessible en premier:

if ([[WCSession defaultSession] isReachable]) { 
    //Here is where you will send you data 
} 

Les API « opérations d'arrière-plan » ne nécessitent pas l'appareil de contrepartie pour être accessible au moment que vous appelez l'API WCSession.

Vous avez plusieurs options en matière de transfert de données entre vos applications, dans le Apple Documentation ils sont décrits comme ceci:

  • Utilisez la méthode updateApplicationContext:error: de communiquer que les informations les plus récentes de l'Etat à la contrepartie. Lorsque la contrepartie se réveille, elle peut utiliser cette information pour mettre à jour son propre état et rester synchronisé. L'envoi d'un nouveau dictionnaire avec cette méthode écrase le dictionnaire précédent. Utilisez la méthode sendMessage:replyHandler:errorHandler: ou sendMessageData:replyHandler:errorHandler: pour transférer des données immédiatement à la contrepartie. Ces méthodes sont destinées à une communication immédiate lorsque votre application iOS et votre extension WatchKit sont actives. La méthode transferUserInfo: permet de transférer un dictionnaire de données en arrière-plan. Les dictionnaires que vous envoyez sont mis en file d'attente pour être livrés à la contrepartie et les transferts continuent lorsque l'application en cours est suspendue ou résiliée.

  • Utilisez la méthode transferFile:metadata: pour transférer des fichiers en arrière-plan. Utilisez cette méthode dans les cas où vous souhaitez envoyer plus d'un simple dictionnaire de valeurs. Par exemple, utilisez cette méthode pour envoyer des images ou des documents basés sur des fichiers.

Je vais vous donner un exemple comment envoyer/recevoir des données avec Contexte d'application

Envoyer des données:

WCSession *session = [WCSession defaultSession]; 
NSError *error; 

[session updateApplicationContext:@{@"firstItem": @"item1", @"secondItem":[NSNumber numberWithInt:2]} error:&error]; 

Recevoir des données:

- (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext { 

    NSLog(@"%@", applicationContext); 


    NSString *item1 = [applicationContext objectForKey:@"firstItem"]; 
    int item2 = [[applicationContext objectForKey:@"secondItem"] intValue]; 
} 

Pour en savoir plus informations sur WatchConnectivity Je recommande vraiment de regarder le WWDC2015 session video et en lisant le Apple Documentation on WatchConnectivity