Приложение WatchOS не обнаруживает приложение-компаньон iOS - PullRequest
2 голосов
/ 31 января 2020

Я создаю независимое приложение Apple Watch (но с приложением iPhone, которое не требуется для работы приложения часов).

Приложение использует WatchConnectivity для синхронизации c данные между устройствами, если установлено приложение-компаньон iPhone. Я могу вызвать session.updateApplicationContext () в приложении iOS и получить сеанс (didReceiveApplicationContext) в приложении Watch. Но пойти другим путем невозможно. Я всегда получаю код NSError 7018, который означает, что приложение-компаньон iOS не установлено.

Я убедился, что приложение watchOS и iOS установлено в симуляторе (и проверено на моих реальных устройствах, iPhone 11 и Watch series 5.) Но получение таких же неудачных результатов от watchOS -> iOS.

Я заметил, что для watchOS 6.0+ * доступна новая переменная экземпляра WCSession 1015 * isCompanionAppInstalled . Когда я читаю эту переменную после того, как моя WCSession активирована в моем приложении для часов, она всегда возвращает false.

Есть ли еще что-то, что мне нужно искать? Я думаю, может быть, я что-то не так сделал в разных списках info.plist. Но я проверял их несколько раз.


мои файлы info.plist:

В моем приложении для часов:

 WKWatchKitApp is YES
 WKCompanionAppBundleIdentifier is com.abc.myapp

В моем расширении для часов:

  App can run independently of companion iPhone app is YES
  NSExtension
    WKAppBundleIdentifier is com.abc.myapp.watchkitapp
    NSExtensionPointIdentifier is com.apple.watchkit
  • iOS идентификатор пакета приложения - com.ab c .myapp
  • приложение watchOS - com.ab c .myapp.watchkitapp
  • Расширение приложения watchOS - com.ab c .myapp.watchkitapp.watchkitextension

Есть ли что-то еще, что я мог бы пропустить?

Большое спасибо за любую помощь / понимание, что вы можете предложить в этом.

1 Ответ

4 голосов
/ 03 февраля 2020

Хорошо. Я нашел способ избавиться от ошибки и заставить часы работать от часов до iPhone.

Изначально я хотел, чтобы приложение часов было независимым, поэтому в поле расширения часов в Xcode, флажок «Поддерживается запуск без установки iOS приложения». Но как только я сниму этот флажок, WCSession.isCompanionAppInstalled вернет true и ошибка исчезнет. Начинает работать синхронизация от часов до iPhone.

Так что, надеюсь, это не намеренное поведение и скоро будет исправлено Apple. (Я подал отчет об ошибке.) Но сейчас я просто оставлю независимое приложение watchOS без проверки, потому что я действительно хочу WatchConnectivity в случае, если iPhone приложение установлено пользователем.

Спасибо за чтение и удачи в программировании.

...