2015-07-28 3 views
3

Я разрабатываю клиентское приложение с геообъектами, чтобы уведомлять пользователей, когда они приближаются к одному из поставщиков приложений.Можете ли вы разбудить телефон из приложения WatchKit 1.0?

При запуске менеджера местоположений он вызывает локальное уведомление с помощью fireDate текущей даты.

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

Я хотел бы, чтобы пользовательская кнопка действия разбудила телефон и отобразила страницу поставщика в приложении. Вид автоматической передачи обслуживания. Пользователь выражает желание перейти на страницу поставщика, щелкнув страницу «Просмотр поставщика» на часах.

Возможно ли это? В настоящее время я использую метод +[WKInterfaceController openParentApplication:reply:], чтобы попытаться вызвать родительское приложение iOS. Однако, если телефон заблокирован, ничего не происходит. Экран iPhone остается темным, нет звука, ничего.

Если вы разблокируете телефон перед нажатием кнопки действия на часах, он вызывает приложение и отправляет ему сообщение, отображающее страницу поставщика.

В качестве второго вопроса, можно ли настроить приложение для просмотра часов, чтобы при нажатии пользователем кнопки уведомления приложение-наблюдатель передает сообщение в приложение iPhone и закрывает приложение для просмотра? Прямо сейчас у моего клиента нет никаких действий на часах OTHER, чем пользовательское уведомление, которое выводит пользователя на страницу поставщика. Основной экран приложения watch - это только местозаполнитель на данный момент, и это выглядит глупо, когда вы нажимаете кнопку пользовательского действия и получаете этот пустой экран.

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

ответ

0

Ответ на это, по-видимому, нет, и нет.

Apple рассматривает пробуждение телефона как то, что пользователь должен делать непосредственно с телефона.

Что я сделал, так это то, что сообщение openParentApplication:reply:error: с телефона на часы ищите словарный словарь для ответа от iPhone, который включает пару ключ/значение wasInBackground, содержащую bool YES или NO.

if wasInBackground == YES, он отображает модальное сообщение, сообщающее пользователю, что им нужно открыть приложение на своем телефоне, чтобы просмотреть содержимое.

Если wasInBackground == НЕТ, тогда телефон не спал, а приложение было самым передним, поэтому приложение смогло отобразить контент у пользователя.

Затем, если на телефоне отображается сообщение с часами, в то время как в фоновом режиме, я проверяю тип действия, которое запрашивает часы. Если это запрос для отображения маршрутов движения, я создаю блок, в котором будет отображаться код для проезда, и установите его в свойстве «blockToRunOnReturnToForeground» делегата приложения. Затем, когда делегат приложения получает сообщение applicationWillEnterForeground, он проверяет не-nil «blockToRunOnReturnToForeground», и он есть один, вызывает его и отменяет.

В результате, когда пользователь, наконец, возвращает приложение на передний план, он затем отправляет запрос на проезд.

Пользовательский интерфейс не совсем бесплатный, как хотелось бы, но, по крайней мере, пользователь не остается в полном замешательстве относительно того, почему ничего не происходит, когда они нажимают одну из кнопок действия на часах.

Смежные вопросы