Il titolo lo somma. La stessa domanda è here. Pubblicando su SO per vedere se posso ricevere aiuto. Ho anche creato un almost minimal project per dimostrare il problema che sto affrontando, quindi i collegamenti che seguono puntano al pezzo di codice menzionato.Non si ricevono i callback AppMessage quando si invia un messaggio all'interno di un evento di connessione bluetooth
Niente di speciale su quello che sto facendo attualmente:
- mio watchface è notified che la connessione bluetooth con il telefono è in su, utilizzando
.pebble_app_connection_handler
. - In quello bluetooth callback ho impostato, I send a message to the phone utilizzando
app_message_outbox_send()
. Quando la connessione BT è attiva, ovviamente. - La mia app per Android ha uno
BroadcastReceiver
che ascolta questi messaggi e calls anIntentService
. - Questo
IntentService
calculates the data, pushes it to the watch e sets itself to run again dopo un po 'di tempo.
Cosa mi aspetto:
- Quando la connessione BT è in su, il gestore di connessione da chiamare.
app_message_outbox_send()
restituisce un valore che indica se l'inizializzazione del messaggio ha avuto errori. Normalmente, questo èAPP_MSG_OK
, ma può essereAPP_MSG_BUSY
, e ne sono perfettamente consapevole.- Il callback dei messaggi dell'app (
app_message_register_inbox_received
e gli amici) viene chiamato per indicare se il processo asincrono di invio del messaggio al telefono ha funzionato davvero. Questo è indicato nel docs.
Quello che sto vedendo:
I passi previsti accadere quando il watchface viene caricato, perché ho innescare l'aggiornamento manualmente. Tuttavia, quando l'aggiornamento viene attivato da un evento di connessione BT, si verificano i passaggi 1 e 2 previsti, ma non il passaggio 3.
Questo è particolarmente aggravante quando ricevo APP_MSG_OK
nel passaggio 2, perché dovrei ragionevolmente aspettarmi che tutto l'orologio è andato bene, e dovrei prepararmi a ricevere qualcosa di all'interno dei callback dei messaggi dell'app. Fondamentalmente, mi è stato detto dai dottori di aspettare una chiamata che sia mai.
Questo accade il 100% del tempo.
Grazie per qualsiasi aiuto. Ho un'altra soluzione che funziona, usando l'orologio per tenere traccia dell'intervallo di aggiornamento, ma credo che questo mi consenta di risparmiare più batteria sfruttando le recenti funzionalità di Android.
“consente di determinare se l'orologio è collegato al cellulare app_ _Pebble sottoscrivendo i' pebble_app_connection_handler' [...] permette anche di determinare se l'orologio sassolino può stabilire una connessione a un'app_PebbleKit companion iscrivendosi a 'pebblekit_connection_handler' [...] ciò restituirà _true per Android_ ogni volta che viene stabilita una connessione con l'app mobile _Pebble (poiché i messaggi PebbleKit vengono instradati tramite l'app Android)" Origine: https: //developer.pebble.com/docs/c/Foundation/Event_Service/ConnectionService/ – davidcesarino
Inoltre, ho notato che 'connection_service_peek_pebblekit_connection' restituisce' true' anche quando il bluetooth è s off o lascio l'orologio disconnesso nell'app Pebble. Solo 'connection_service_peek_pebble_app_connection' sembra avere alcun effetto. – davidcesarino