Как отслеживать действия пользователя на стекле
У меня есть приложение на основе зеркального API, в котором я назначил пользовательский пункт меню, щелкнув по которому следует вставить новую карту. У меня есть небольшая проблема в этом. Мне нужно знать, как я могу отладить это.
- Проверьте, была ли подписка на стеклянную шкалу успешной.
- Распечатайте что-нибудь на консоли по щелчку меню.
- Любым другим способом я могу определить, вызывался ли при нажатии меню URL-адрес обратного вызова или нет.
1 ответ
Похоже, у вас есть проблема, но вы не знаете, как ее решить? Несколько вещей, которые стоит посмотреть и попробовать:
Вопрос 1: проверка подписок
Объект, возвращаемый из subscription.insert, должен указывать, что подписка прошла успешно. В зависимости от вашего языка, исключение или ошибка могут указывать на проблему.
Вы также можете позвонить на subscription.list, чтобы убедиться, что подписки есть и для них установлены ожидаемые значения. Если пользователь удалит авторизацию для вашей стеклянной посуды, этот список будет очищен.
Некоторые вещи, которые нужно помнить об URL, используемом для подписок:
- Это должен быть URL-адрес HTTPS, и он не может использовать самозаверяющий сертификат.
- Адрес должен быть разрешен из общедоступного интернета. "localhost" и псевдонимы локальных имен не будут работать.
- Машина должна быть доступна из общедоступного интернета. Машины с адресами типа "192.168.1.10", вероятно, не будут достаточно хороши.
Вопрос 2: печать при нажатии
Вы должны убедиться, что подписка настроена правильно, и что ваше веб-приложение прослушивает указанный вами адрес, который будет обрабатывать операции POST с этим URL. Разумеется, метод, вызываемый при обращении к этому URL, зависит от вас, поэтому вы можете добавить в него запись в журнал. Специфика языка может помочь здесь.
Попробуйте проверить это самостоятельно, перейдя по указанному вами URL-адресу, используя собственный браузер. Вы должны увидеть распечатанное сообщение журнала, как минимум.
Если вы хотите, чтобы он был распечатан только для определенного пункта меню, вам необходимо убедиться, что вы можете декодировать тело JSON, которое отправляется как часть POST, и отвечать на него в зависимости от операции и идентификатора пункта меню.
Вы также должны убедиться, что вы возвращаете HTTP-код 200 как можно быстрее - если вы этого не сделаете, серверы Google могут на некоторое время повторить попытку или в конечном итоге сдаться, если они не получат ответ.
Обновление: из примера кода, который вы разместили, я заметил, что вы либо входите в систему INFO, либо отправляете в stdout, который должен войти в систему INFO (см. https://developers.google.com/appengine/docs/java/)., Вы получаете запись из метода doGet()? Этот вопрос Stackru предполагает, что appengine не отображает элементы, зарегистрированные в INFO, если вы не измените logging.properties
файл.
Вопрос 3: щелкнуло или нет?
В зависимости от конфигурации вашего веб-сервера и сервера приложений, должны быть журналы о том, какие URL были достигнуты (как отмечено @scarygami в комментариях к вашему вопросу).
Вы можете проверить это самостоятельно, чтобы убедиться, что вы можете нажать на URL, и он регистрируется. Имейте в виду, однако, предупреждения, которые я упомянул выше о том, что делает действительный URL для обратного вызова Mirror API.
Обновление. Из вашего комментария ниже кажется, что вы видите, что URL-адрес, относящийся к TimelineUpdateServlet, подвергается удару, но не видите никаких доказательств того, что вызывается сообщение журнала в TimelineUpdateServlet.doPost(). Какой код возврата зарегистрирован? Вы пытались вызвать этот URL вручную через POST, чтобы убедиться, что URL идет к ожидаемому сервлету?