2016-08-01 5 views
1

Я разрабатываю приложение Apple Watch. Я могу отправлять данные в Apple Watch с iPhone, когда на iPhone происходит определенное событие. Тем не менее, я хочу, чтобы часы извлекали данные, когда они запускаются. Как мне решить проблему? Каков наиболее эффективный способ сделать это?WatchOS выборка данных с iPhone

ответ

4

WatchConnectivity

первых двух классов, которые должны взаимодействовать друг с другом (IOS и watchOS) должны соответствовать по <WCSessionDelegate> и #importWatchConnectivity рамки

Перед отправкой данных необходимо проверьте, может ли ваше устройство отправить данные

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

Затем, если вы хотите использовать «интерактивные сообщения» (сена dMessage API) вы должны видеть, если другое устройство достижимо первым:

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

«Фоновые операции» API-интерфейсы не требуют устройств партнерских быть доступными в тот момент времени, когда вы называете WCSession API.

У вас есть несколько вариантов, когда речь идет о передаче данных между вашими приложениями, в Apple Documentation они описываются так:

  • Используйте метод updateApplicationContext:error: общаться только самую последнюю информацию о состоянии к контрагенту. Когда встречный сигнал просыпается, он может использовать эту информацию для обновления своего собственного состояния и оставаться в синхронизации. Отправка нового словаря с помощью этого метода перезаписывает предыдущий словарь.

  • Использование метода sendMessage:replyHandler:errorHandler: или sendMessageData:replyHandler:errorHandler: для немедленного перевода данных. Эти методы предназначены для немедленной связи, когда ваши приложения iOS и расширение WatchKit являются активными.

  • Используйте метод transferUserInfo: для перевода словаря данных в фоновом режиме. Выбранные словари поставлены в очередь для доставки в адрес партнера, и передача продолжается, когда текущее приложение приостановлено или завершено.

  • Используйте метод transferFile:metadata: для передачи файлов в фоновом режиме. Используйте этот метод в тех случаях, когда вы хотите отправить более простой словарь значений. Например, используйте этот метод для отправки изображений или файлов на основе документов.

Я дам вам пример, как отправить/получить данные с контекстом Application

Отправить данные:

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

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

Получение данных:

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

    NSLog(@"%@", applicationContext); 


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

Для более информация о WatchConnectivity Я действительно рекомендую смотреть WWDC2015 session video и чтениях Apple Documentation on WatchConnectivity