2016-08-16 8 views
0

У меня есть приложение для наблюдения, которое должно иметь данные из приложения iPhone. Я передаю его так.Apple Watch OS 2: Есть ли возможность переносить данные с iPhone на приложение «Наблюдение за приложениями без наблюдения» на переднем плане?

if ([WCSession isSupported]) { 
     WCSession *session = [WCSession defaultSession]; 
     session.delegate = self; 
     [session activateSession]; 
     } 

    if ([[WCSession defaultSession] isReachable]) { 
      NSArray *keys = [NSArray arrayWithObjects: @"data", @"data1" ,nil]; 
      NSArray *objects = [NSArray arrayWithObjects:data,data1, nil]; 
      NSDictionary *applicationDict = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 
     [[WCSession defaultSession] sendMessage:applicationDict replyHandler:^(NSDictionary *replyHandler) { 

    } errorHandler:^(NSError *error) { 

    }]; 
    } 

и получите его так.

- (void)session:(nonnull WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void(^)(NSDictionary<NSString *,id> *))replyHandler { 

} 

Однако это работает только в том случае, если Apple Watch находится на переднем плане. Есть ли способ обойти это, когда приложение Apple Watch может получать данные без приложения, находящегося на переднем плане, или, может быть, есть альтернативный способ сделать это, как пробуждение приложения Apple Watch перед отправкой данных.

ответ

0

Что вы можете сделать, это использовать updateApplicationContext: ошибка: метод на WCSession объект отправить обновленные данные на часы. Когда ваше приложение часов просыпается, оно получит объект контекста с обновленными данными.

+0

Должен ли я помещать это в обработчик ошибок, так что, если сообщение не срабатывает, я могу вернуться к этому? – Weakman10122

+0

Вы должны использовать метод, когда isReachable возвращает false. Так что сделайте еще один случай и добавьте там код. –

+0

Спасибо, это действительно сработало. Я забыл дать вам правильную награду за ответ. Сожалею. – Weakman10122