Использование основного местоположения в Apple WatchKit

В настоящее время я разрабатываю расширение для Apple Watch. Кто-нибудь знает, предоставляется ли текущее местоположение самим iPhone или Watch? Я не могу найти никакой информации об этом, и мне нужно нарисовать компас, указывающий, куда указывают часы.


person Giuseppe Travasoni    schedule 11.12.2014    source источник


Ответы (3)


Чтобы делать то, что вы хотите, вам не нужен CoreLocation, вам просто нужен магнитометр.

Насколько я знаю, Apple Watch не имеют встроенного.

Датчики у него такие...

  • Акселерометр
  • Гироскоп
  • Датчик сердечного ритма
  • Барометр

Но без магнитометра.

person Fogmeister    schedule 11.12.2014
comment
Расширение watchkit работает внутри iPhone, так что вы можете получить местоположение, используя его, используя обычные средства. - person Peter Smith; 16.04.2015
comment
@PeterSmith Им не нужно это место. Им нужно направление на север. Я не думаю, что есть способ определить направление телефона по сравнению с направлением часов. - person Fogmeister; 16.04.2015
comment
@Fogmeister Да, вы совершенно правы, я не анализировал, какую проблему он пытался решить, просто ответил на вопрос. Для часов потребуется внутренний компас, я его не нашел. Я считаю, что лучшее, что могут сделать часы, — это знать, куда указывает телефон. - person Peter Smith; 16.04.2015
comment
Раздел «Карты» на этой странице показывает стрелку заголовка, что заставляет меня задуматься, может ли она быть, и они просто еще не показали ее: developer.apple.com/watch/human-interface-guidelines/ - person gohnjanotis; 26.06.2015
comment
@gohnjanotis, это не стрелка заголовка. Это рисунок, показывающий, что они означают в тексте. В часах нет компаса. - person Fogmeister; 26.06.2015

Согласно Документация Apple для разработчиков:

Лучшее решение для выполнения любых длительных задач — позволить вашему приложению iOS выполнять эту задачу. Например, вместо того, чтобы запускать службы определения местоположения в расширении WatchKit, запустите их в своем приложении для iOS. Ваше приложение iOS может собирать необходимые данные и помещать их в общую группу приложений, чтобы ваше расширение могло получить к ним доступ позже. Используйте метод openParentApplication:reply: для инициирования задач и получения ответа или используйте общий групповой контейнер для обмена информацией между вашим приложением iOS и расширением WatchKit. Для получения информации о том, как управлять связью между вашим приложением iOS и расширением WatchKit, см. раздел «Прямая связь с вашим приложением iOS, содержащим».

P.S. Я работаю над подобным приложением.

person Janusz Chudzynski    schedule 17.01.2015

Вы не можете использовать CoreLocation из расширения watchkit. Однако вы можете использовать API, чтобы открыть родительское приложение (в фоновом режиме) и запросить информацию у родительского API. API действительно хорош, потому что вы можете использовать его с ответом, чтобы вы могли легко получить информацию обратно:

+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo, NSError *error)) reply;    // launches containing iOS application on the phone
person Paul Yorke    schedule 12.12.2014
comment
CoreLocation можно использовать из расширения WatchKit, однако оно не может запрашивать разрешения и наследует разрешения местоположения приложения-контейнера. openParentApplication: сложно использовать так, как вы описываете, потому что ответ должен быть синхронным, а CoreLocation — это асинхронный API. - person Sam; 13.12.2014
comment
@Sam openParentApplication:reply: является асинхронным — ваше приложение может вызвать обратный вызов в любое время. - person s4y; 17.03.2015
comment
@Sidnicious верно, это асинхронно. Не уверен, что в то время я полностью понял изменения Beta 2 — извините. - person Sam; 17.03.2015
comment
Мое приложение для watchOS 1 использует CoreLocation, потому что оно работает на iPhone. Так что я действительно не знаю, откуда вы черпаете информацию. Подмножество CoreLocation также поддерживается изначально в watchOS 2. - person Rickster; 16.08.2015