AppMessages Спорадически не доставляют
У меня есть проблема, когда я, когда я отправляю сообщение со стороны Android (в приемнике вещания), сообщения не всегда попадают в часы Pebble. Это противоречиво, иногда это работает.
Я больше не получаю результат APP_MSG_BUSY (я пытаюсь отправить только одно сообщение Android->Pebble).
Это довольно просто, как я посылаю небольшой объем данных (<64 байтов):
PebbleKit.sendDataToPebble(context, appUuid, dict)
У меня размер входящих и исходящих сообщений настроен на их максимум.
И на стороне гальки я зарегистрировал свой обратный вызов, и я имею дело с сообщением так:
static void inbox_received_callback(DictionaryIterator *iter, void *context) {
// A new message has been successfully received
APP_LOG(APP_LOG_LEVEL_INFO, "Message received");
}
Примечание: есть также inbox_dropped_callback
зарегистрирован, но я не включил это для краткости.
Я правильно N/ACK отправил сообщение на стороне Android (узнал, что это сложный путь), но я не вижу способа N/ACK сообщения на стороне Pebble. Я предполагаю, что предоставления обратного вызова достаточно?
Хорошей новостью является то, что иногда это работает, поэтому я знаю, что все настроено правильно. Плохая новость заключается в том, что когда он перестает работать, он перестает работать почти полностью и на некоторое время (15 минут или дольше). Я подозреваю, что почтовый ящик заполняется, но я не знаю, как проверить.
РЕДАКТИРОВАТЬ: я добавил обработчик Ack и Nack на стороне Android, и я получаю Nack, когда я отправляю сообщение. Мне нужно выяснить, почему мои часы Pebble не позволяют ничего. Есть догадки?
Я также нахожу это в logcat от Android:
10-05 13:16:37.206 8361-2610/? W/Pbl: [AppMessage] there is not UUID for transactionId : -1
Я подтвердил, что мой UUID установлен правильно.
1 ответ
Похоже, это проблема времени. После исследования в Интернете и поиска ссылки, я добавил psleep(1000) к своему коду, и он работает нормально. Я отправлял сообщение, пока приложение еще запускалось.
Я нашел прослушиватель событий, но он основан на JS, а мое приложение написано на C.
Надеюсь, это поможет кому-то!