10

Tiêu đề tổng hợp lại. Cùng một câu hỏi là here. Đăng trên SO để xem tôi có thể nhận được trợ giúp nào không. Tôi cũng đã thực hiện một số almost minimal project để chứng minh sự cố mà tôi đang gặp phải, vì vậy các liên kết theo điểm tới đoạn mã được đề cập.Không nhận được cuộc gọi lại AppMessage khi gửi tin nhắn bên trong sự kiện kết nối bluetooth

Không có gì lạ mắt trên những gì tôi đang thực hiện:

  1. watchface tôi là notified rằng kết nối bluetooth với điện thoại đang gia tăng, sử dụng .pebble_app_connection_handler.
  2. Trong đó bluetooth callback Tôi đã thiết lập, tôi send a message to the phone sử dụng app_message_outbox_send(). Khi kết nối BT là lên, tất nhiên.
  3. Ứng dụng Android của tôi có số BroadcastReceiver lắng nghe những thông báo này và calls an IntentService.
  4. Điều này IntentServicecalculates the data, pushes it to the watchsets itself to run again sau một thời gian.

Những gì tôi mong đợi:

  1. Khi kết nối BT đang gia tăng, xử lý kết nối được gọi.
  2. app_message_outbox_send() trả lại giá trị cho biết liệu bắt đầu tin nhắn có bất kỳ lỗi nào không. Thông thường, đây là APP_MSG_OK, nhưng có thể là APP_MSG_BUSY và tôi hoàn toàn nhận thức được điều đó.
  3. Gọi lại tin nhắn ứng dụng (app_message_register_inbox_received và bạn bè) được gọi để cho biết liệu quá trình không đồng bộ gửi tin nhắn đến điện thoại có thực sự hoạt động hay không. Điều này được nêu trong số docs.

Những gì tôi đang nhìn thấy:

Các bước dự kiến ​​xảy ra khi watchface được nạp, vì tôi kích hoạt bản cập nhật bằng tay. Tuy nhiên, khi cập nhật được kích hoạt bởi sự kiện kết nối BT, các bước 1 và 2 xảy ra dự kiến, nhưng không phải bước 3.

Điều này đặc biệt nghiêm trọng hơn khi tôi nhận được APP_MSG_OK ở bước 2, vì tôi nên mong đợi mọi thứ trên chiếc đồng hồ đã hoạt động tốt và tôi nên chuẩn bị bản thân để nhận được một cái gì đó bên trong các cuộc gọi lại tin nhắn ứng dụng. Về cơ bản, tôi được các tài liệu yêu cầu chờ một cuộc gọi không bao giờ là.

Điều này xảy ra 100% thời gian.

Cảm ơn bạn đã được trợ giúp. Tôi có một giải pháp khác hoạt động, sử dụng đồng hồ để theo dõi khoảng thời gian cập nhật, nhưng tôi tin rằng giải pháp này cho phép tôi tiết kiệm pin hơn bằng cách sử dụng các tính năng Android gần đây.

Trả lời

3

Từ tài liệu:

cũng Để được thông báo về các sự kiện kết nối liên quan đến bất kỳ PebbleKit đồng hành các ứng dụng liên quan đến watchapp này, cũng gán một handler để các pebblekit_connection_handler lĩnh vực. Điều này sẽ được gọi khi trạng thái của kết nối với thay đổi ứng dụng PebbleKit.

Có lẽ đó là những gì bạn cần

+0

“cho phép bạn xác định xem chiếc đồng hồ được kết nối với điện thoại di động app_ _Pebble bằng cách đăng ký vào 'pebble_app_connection_handler' [...] cũng cho phép bạn xác định xem chiếc đồng hồ Pebble có thể thiết lập kết nối với ứng dụng đồng hành _PebbleKit_ bằng cách đăng ký 'pebblekit_connection_handler' […] điều này sẽ trả về _true cho Android_ bất kỳ khi nào kết nối với _Pebble mobile app_ được thiết lập (vì tin nhắn PebbleKit được định tuyến thông qua ứng dụng Android)” Nguồn: https: //developer.pebble.com/docs/c/Foundation/Event_Service/ConnectionService/ – davidcesarino

+0

Bên cạnh đó, chỉ cần nhận thấy rằng 'connection_service_peek_pebblekit_connection' trả về' true' ngay cả khi bluetooth i s tắt hoặc tôi rời khỏi đồng hồ bị ngắt kết nối trong ứng dụng Pebble. Chỉ 'connection_service_peek_pebble_app_connection' dường như có hiệu lực. – davidcesarino

Các vấn đề liên quan