【问题标题】:Getting "Ignoring invalid key: KEY_TEMPERATURE" error on pebble watch卵石手表上出现“忽略无效密钥:KEY_TEMPERATURE”错误
【发布时间】:2015-01-18 21:22:48
【问题描述】:

我已按照鹅卵石表盘的教程进行操作,但更改了一些内容,但在日志中出现错误:

忽略无效键:KEY_TEMPERATURE 忽略无效键:KEY_CONDITIONS

这导致没有显示天气我认为它可能是 js 代码,但我已经在教程 main.c 中使用它并且它工作正常。

Link to Github repo

【问题讨论】:

  • 一般情况下,相关代码应该直接包含在您的问题中。

标签: c pebble-watch cloudpebble pebble-js


【解决方案1】:

您没有在 appinfo.json 中指定任何 appKeys

Pebble 消息以 整数 为键,而不是字符串。但是有设施可以use meaningful strings when coding:

在 PebbleKit JS 消息中使用命名键

PebbleKit JavaScript 提供了一种使用命名键而不是整数键的机制。这提高了 JavaScript 代码的可读性,并允许您将 AppMessage 键的定义分组到一个位置。

键在 CloudPebble 中的“设置”屏幕的“PebbleKit JS 消息键”部分中声明。

在原生 SDK 中,命名键是通过 appinfo.json 文件中的 appKeys 对象配置的。此对象将整数值与字符串相关联。这些值用于转换传出和传入消息的键。

"appKeys": {
  "firstKey":  0,
  "secondKey": 1
}

请注意,此处定义的键应与 C 代码中的键匹配,可能通过 C 源代码或头文件中的 #define 语句。

对于传入消息的每个键,PebbleKit JS 在appKeys 对象中查找与键具有相同整数值的元素。如果它可以找到一个,它会用 JavaScript 对象中的这个字符串替换这个键。如果找不到,它会创建一个包含键的整数值的新字符串。

对于 outgoing 消息的每个键,PebbleKit JS 在 appKeys 对象中查找与该键相等的元素。如果找到一个,它将使用与此元素关联的整数值作为键的整数表示。如果找不到,它会尝试将密钥转换为整数。如果失败,则会引发错误。

例如,给定上面的appKeys配置,下面的语句是等价的:

Pebble.sendAppMessage({ '0':        'A value' });
Pebble.sendAppMessage({ 'firstKey': 'A value' });

确保更新您的代码,以便在 C 中指定这些值(您似乎是通过 #define 完成的)以及通过 appinfo.json 文件的 JavaScript 中的值:

...
"appKeys": {
  "KEY_TEMPERATURE": 0,
  "KEY_CONDITIONS": 1
},
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多