-1

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

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

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

链接到 Github 存储库

4

1 回答 1

1

您没有appKeysappinfo.json.

Pebble 消息使用整数而不是字符串作为键。但是有一些设施,所以你可以在编码时使用有意义的字符串

在 PebbleKit JS 消息中使用命名键

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

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

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

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

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

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

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

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

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

Make sure to update your code so that you specify these values in C (which you appear to have done via #define) and also in JavaScript by means of the appinfo.json file:

...
"appKeys": {
  "KEY_TEMPERATURE": 0,
  "KEY_CONDITIONS": 1
},
...
于 2015-01-18T23:13:57.583 回答