2016-12-19 5 views
1

Я работаю над образцом для набора часов (Apple Watch + iPhone). Здесь мое приложение прекрасно синхронизируется. А также я работал на WCSession, используя передачу данных (iPhone для Apple Watch). Он работает нормально, когда оба находятся в активном состоянии. Но я не мог передавать данные в Applewatch, если это неактивное состояние (фоновое состояние, спящий режим или состояние переднего плана). метод делегата не вызывается.Как мы можем отправить сообщение с iphone на AppleWatch, когда AppleWatch в backgroundstate или sleepmode?

- (void)applicationDidBecomeActive { 
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
if ([WCSession isSupported]) { 
    WCSession *session = [WCSession defaultSession]; 
    session.delegate = self; 
    [session activateSession]; 
} 
} 

Вот мой метод делегирования.

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

Пожалуйста, помогите мне.

+0

iWatch предполагают, чтобы работать только таким образом. Вы не должны ожидать, что он откроется iPhone сразу, а наоборот, потому что они запускаются только тогда, когда пользователь взаимодействует с одним из своих интерфейсов. Есть некоторые исключения, но эти исключения не покрывают пробуждение от iPhone. Вы должны найти другой способ взаимодействия с iWatch или слегка настроить функцию приложения. – Tushar

ответ

0

Если устройство iOS и часы Apple сопряжены. Затем, отправляя сообщение с помощью WCSession, он автоматически разбудит приложение.

0

Используя следующий код, я решил свою проблему.

В ViewController:

// Sending data to iphone to applewatch 
WCSession *session = [WCSession defaultSession]; 
    NSError *error; 
    [session updateApplicationContext:@{@"counterValue":@"counter", @"userId":@"id"} error:&error]; 

Applewatch: (Interfacecontroller)

//Receiving data in applewatch from iphone 
- (void) session:(nonnull WCSession*)session didReceiveApplicationContext:(nonnull NSDictionary<NSString * ,id> *)applicationContext { 
}