2016-09-21 5 views
0

В AppDelegate в файле didFinishLaunchingWithOptions я подключаю к приложению.Apple Watch Unpaired ActivateSession slow

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

В большинстве случаев это нормально работает. Однако, когда у пользователей были часы в паре, и они снимают часы, у нас возникают задержки в [session activSession]. Для этого вызова потребуется 7-8 секунд. Это вызывает огромную задержку при запуске приложения.

Я подозреваю, что это ошибка Apple, я не могу сказать об этом Apple, чтобы исправить это по короткому уведомлению.

Как я обхожусь в пути Я ищу, чтобы проверить, если часы спарены, перед активацией. Однако «сеанс» не содержит достоверных данных. Как я могу проверить, спарен ли часы, перед операцией «session activateSession» ?

Это происходит как в iOS9.3, так и в iOS10.0.1, я не тестировал другие версии.

ответ

1

Это наверняка звучит как ошибка. В качестве временного решения можно либо:

  • сделать активацию на фоне потоке, или
  • используют преимущество асинхронной активации добавлен WCSession в прошивкой 9.3 и watchOS 2,2 путем реализации session:activationDidCompleteWithActivationState:error:
+0

Это настоятельно рекомендуется выполнить активацию в AppDelegate, поэтому первое обходное решение невозможно. – Vincent

+0

2-й обходной путь отлично работает. Просто включите сеанс метода: activationDidCompleteWithActivationState: ошибка: (без содержимого). Благодаря! – Vincent