问题标签 [pebble-appmessage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
135 浏览

asynchronous - 在蓝牙连接事件中发送消息时未收到 AppMessage 回调

标题总结了它。同样的问题在这里。在 SO 上发帖,看看我能不能得到任何帮助。我还制作了一个几乎最小的项目来演示我面临的问题,因此后面的链接指向所提到的代码段。

对我目前正在做的事情没有什么特别的:

  1. 我的表盘被通知与手机的蓝牙连接已启动,使用.pebble_app_connection_handler.
  2. 在我设置的那个蓝牙回调我使用. 当然,当 BT 连接建立时。app_message_outbox_send()
  3. 我的 Android 应用程序有一个BroadcastReceiver监听这些消息并调用一个IntentService.
  4. IntentService 会计算数据将其推送到手表并设置自己在一段时间后再次运行。

我的期望

  1. 当 BT 连接建立时,将调用连接处理程序。
  2. app_message_outbox_send()返回一个值,告诉消息启动是否有任何错误。通常,这是APP_MSG_OK,但它可以是APP_MSG_BUSY,我完全意识到这一点。
  3. 调用应用程序消息回调(app_message_register_inbox_received和朋友)来指示向手机发送消息的异步过程是否真的有效。这在docs中有说明。

我所看到的

加载表盘时会发生预期的步骤,因为我手动触发了更新。但是,当更新由 BT 连接事件触发时,会发生预期的步骤 1 和 2,但不会发生步骤 3。

当我进入第 2 步时,这尤其严重APP_MSG_OK,因为我应该合理地期望手表上的一切都正常,并且我应该准备好在应用程序消息回调中接收一些东西。基本上,医生告诉我要等待一个永远不会到达的电话。

这发生在 100% 的时间

感谢您的任何帮助。我有另一种可行的解决方案,使用手表来跟踪更新间隔,但我相信这个解决方案可以让我通过利用最近的 Android 功能来节省更多电池电量。

0 投票
1 回答
138 浏览

c - pebblekit js通过appmessage将数组发送到pebble C

我正在尝试编写我的第一个 Pebble C 应用程序,该应用程序基于我制作的 pebble.js 应用程序。我基本上是在显示巴士时刻表。

我的问题是,如何通过 appmessage 将信息从 pebblekit js 传递到 pebble C,以便构建菜单?如何通过 appmessage 将多维数组传递给手表?

这是我的 pebblekit js 必须发送到手表的 json 示例:

0 投票
1 回答
40 浏览

pebble-sdk - 由于 APP_MSG_BUSY,从手机到 android 的诊断消息丢失?

我正在尝试将消息从 Android 配套应用程序发送到 Pebble 表盘应用程序,但这会失败并出现APP_MSG_BUSY错误。阅读日志,我可以重构以下重复发生的事件序列:

  1. Pebble 应用程序调用app_message_outbox_send
  2. Android 配套应用PebbleDataReceiver.receiveData接听电话。
  3. Android 配套应用调用PebbleDataReceiver.sendAckToPebble(context, id)
  4. Pebble 应用程序outbox_sent接听电话。
  5. Android 配套应用程序可以完成一些工作,大约需要 70 毫秒。
  6. Android 配套应用调用PebbleKit.sendDataToPebble
  7. Pebble 应用程序inbox_dropped接听电话APP_MSG_BUSY
  8. adb logcat显示以下警告:

Pbl:[AppMessage] transactionId 没有 UUID:-1
Pbl:[JsInAppMessageHandler] sendAckNackToJs:运行:无法将 ack 消息发送到 javascript 代码,因为 uuid 为空

APP_MSG_BUSY表示有正在传入或传出的消息。但是,您可以从上面的事件中看到没有传出消息。此外,每条传入消息都会发生这种情况,甚至是 Pebble 应用程序在重新启动后收到的第一条消息。

任何人都可以对这里发生的事情提供一些见解吗?

0 投票
1 回答
31 浏览

android - AppMessages 偶尔不会被传递

我有一个问题,当我从 Android 端(在广播接收器中)发送消息时,消息并不总是能发送到 Pebble 手表。它是不一致的,有时它会起作用。

我不再收到 APP_MSG_BUSY 结果(我只想发送一条消息 Android->Pebble)。

这就是我发送少量数据(<64 字节)的方式:

我将收件箱和发件箱的大小配置为最大值。

在鹅卵石方面,我已经注册了我的回调,并按如下方式处理消息:

注意:还有一个inbox_dropped_callback已注册的,但为简洁起见,我没有将其包括在内。

我已经在 Android 端正确地对消息进行了 N/ACK(很难学到),但我没有看到在 Pebble 端对消息进行 N/ACK 的方法。我假设提供回调就足够了?

好消息是它有时会起作用,所以我知道我已经正确配置了一切。坏消息是,当它停止工作时,它几乎完全停止工作并持续相当长的一段时间(15 分钟或更长时间)。我怀疑收件箱正在填满,但我不知道如何检查。

编辑:我在 Android 端添加了一个 Ack 和一个 Nack 处理程序,当我发送消息时我得到一个 Nack。我需要弄清楚为什么我的 Pebble 手表不允许。有什么猜测吗?

我也在 Android 的 logcat 中找到了这个:

我已确认我的 UUID 设置正确。