Как отслеживать действия пользователя на Glass

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

  1. Проверьте, прошла ли подписка на временную шкалу стекла успешно.
  2. Распечатайте что-нибудь на консоли по щелчку меню.
  3. Любым другим способом я могу определить, был ли вызван URL-адрес обратного вызова при нажатии на меню или нет.

person Chirag    schedule 07.04.2014    source источник
comment
На какой платформе/языке работает ваш скрипт обратного вызова на стороне сервера? Как правило, вам нужно будет проверить журналы сервера, чтобы увидеть, поступили ли какие-либо входящие запросы, и вы можете добавить в свой скрипт некоторые журналы на стороне сервера с дополнительной информацией, если это необходимо.   -  person Scarygami    schedule 07.04.2014
comment
Можете ли вы обновить свой вопрос с помощью некоторого кода, чтобы проиллюстрировать, как вы подписываетесь, как вы добавляете пользовательское меню и как вы обрабатываете обратный вызов?   -  person Prisoner    schedule 07.04.2014
comment
Я разместил код в своем другом вопросе здесь.   -  person Chirag    schedule 08.04.2014


Ответы (1)


Похоже, у вас есть проблема, но вы не знаете, как подойти к ее отладке? Несколько вещей, чтобы посмотреть и попробовать:

Вопрос 1: проверка подписок

Объект, возвращенный из subscriptions.insert, должен указывать, что подписка успех. В зависимости от вашего языка исключение или ошибка будут указывать на проблему.

Вы также можете вызвать subscriptions.list, чтобы убедиться в наличии подписок. и установлены на значения, которые вы ожидаете. Если пользователь удалит авторизацию для вашего Glassware, этот список будет очищен.

Некоторые вещи, которые следует помнить об URL-адресе, используемом для подписки:

  1. Это должен быть URL-адрес HTTPS и не может использоваться самозаверяющий сертификат.
  2. Адрес должен быть разрешен из общедоступного Интернета. «localhost» и псевдонимы локальных имен не будут работать.
  3. Машина должна быть доступна из общедоступного Интернета. Машины с такими адресами, как «192.168.1.10», вероятно, будут недостаточно хороши.

Вопрос 2: печать при нажатии

Вам необходимо убедиться, что подписка настроена правильно и что у вас есть веб-приложение, прослушивающее указанный вами адрес, который будет обрабатывать операции POST по этому URL-адресу. Конечно, метод, вызываемый при переходе по этому URL-адресу, зависит от вас, поэтому вы можете добавить к нему ведение журнала. Здесь могут помочь языковые особенности.

Попробуйте протестировать его самостоятельно, перейдя по указанному URL-адресу в своем собственном браузере. Вы должны увидеть как минимум распечатанное сообщение журнала.

Если вы хотите, чтобы он печатался только для определенного пункта меню, вам нужно убедиться, что вы можете декодировать тело JSON, которое отправляется как часть POST, и отвечать на основе операции и идентификатора пункта меню.

Вы также должны убедиться, что возвращаете HTTP-код 200 как можно быстрее. Если вы этого не сделаете, серверы Google могут повторить попытку через некоторое время или в конечном итоге отказаться, если они никогда не получат ответа.

Обновление. Из примера кода, который вы разместили, я заметил, что вы либо регистрируетесь в INFO, либо отправляете на стандартный вывод, который должен регистрироваться в INFO (см. https://developers.google.com/appengine/docs/java/#Java_Logging). Вы получаете журнал из метода doGet()? Этот вопрос StackOverflow предполагает, что appengine не отображает элементы, зарегистрированные в INFO, если вы не измените файл logging.properties.

Вопрос 3: был ли клик по нему?

В зависимости от конфигурации вашего веб-сервера и сервера приложений должны быть журналы о том, какие URL-адреса были поражены (как отметил @scarygami в комментариях к вашему вопросу).

Вы можете проверить это самостоятельно, чтобы убедиться, что вы можете попасть по URL-адресу, и он регистрируется. Однако имейте в виду упомянутые выше предупреждения о том, что делает URL-адрес допустимым для обратного вызова API-интерфейса зеркала.

Обновление. Из вашего комментария ниже следует, что вы наблюдаете, что URL-адрес, принадлежащий сервлету TimelineUpdateServlet, подвергается нажатию, но нет каких-либо доказательств что вызывается сообщение журнала в TimelineUpdateServlet.doPost(). Какой код возврата регистрируется? Пробовали ли вы вызывать этот URL-адрес вручную через POST, чтобы убедиться, что URL-адрес соответствует ожидаемому вами сервлету?

person Prisoner    schedule 07.04.2014
comment
Спасибо за подробный ответ. Я использую Google App Engine для того же. В журнале отображается URL-адрес обратного вызова, когда я нажимаю на пользовательское меню. Но он не регистрирует ничего, что я печатаю. Было бы очень полезно, если бы вы могли взглянуть на мой код, который я разместил в вопросе здесь и скажите мне, где я ошибся. - person Chirag; 08.04.2014
comment
два комментария добавлены выше - person Prisoner; 10.04.2014