Закрыть/деактивировать WCSession

Я разрабатываю приложение для iPhone (бета-версия iOS 9) с расширением для часов (watchOS 2), а для передачи данных с часов на телефон я использую WCSession.

У меня есть 2 разных контроллера представления, использующих WCSessions, поэтому для каждого из контроллеров я создаю экземпляр нового объекта WCSession. Для первого контроллера представления он работает нормально, но когда я хочу получать сообщения во втором контроллере представления, на первый контроллер все еще отправляется несколько начальных сообщений.

Есть ли способ деактивировать/отключить сеанс первого контроллера представления перед переходом на второй контроллер? Или есть какие-то другие варианты, которые я должен рассмотреть?

Спасибо!


person user2312896    schedule 18.07.2015    source источник
comment
Какие сообщения WC вы отправляете? Мгновенное сообщение? Данные Приложения?   -  person Philip    schedule 20.07.2015
comment
Людям из будущего: конструктор WCSession теперь приватный, как в выпуске Watch OS 2.   -  person Jokester    schedule 08.10.2015


Ответы (1)


Когда вы передаете данные туда и обратно, вы отправляете словари. Если вы укажете хорошие ключи, вы можете получить соответствующие данные для каждого ViewController.

Пример:

Вьюконтроллер1:

[session updateApplicationContext:@{@"viewController1": @"item1"} error:&error];

Вьюконтроллер2:

[session updateApplicationContext:@{@"viewController2": @"item2"} error:&error];

Когда вы получаете данные:

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

    if ([applicationContext objectForKey:@"viewController1"]) {
        //ViewController1 data
    } else if ([applicationContext objectForKey:@"viewController2"]) {
        //ViewController2 data
    }
}

Посмотрите ответ здесь, чтобы узнать больше о WC. между iOS и WatchOS с WatchConnectivity в watchOS2

person Philip    schedule 20.07.2015
comment
Я чувствую, что это не отвечает на вопрос. Вопрос был о том, как деактивировать сессию, а не о том, как передать данные - person Tyler Sheaffer; 02.08.2016
comment
Это не отвечает на вопрос, как деактивировать или закрыть WCSession. - person lostAtSeaJoshua; 10.02.2017