我现在一直在用卵石做一两天的试验,而且我已经达到了一点停滞状态。也就是说,我似乎无法弄清楚某些事情是如何相关的。我想要做的是从Android上的应用程序获取数据,然后将其发送到卵石,然后让鹅卵石用这些数据做一些有效的工作。
我意识到你在Android应用程序中使用PebbleKit API,以便使用诸如sendDataToPebble()
之类的东西与卵石进行通信。在那之后,我不太确定该怎么做。
使用cloudpebble.net,我使用pebble SDK在C中创建了一个应用程序来确认数据(使用他们网站上建议的处理程序)。但是,我最近发现在整个混音中也可能有javascript,我只是不知道如何与js交互。
是否有可能拥有所有ack / nack数据,并且后续处理/显示数据完全通过javascript完成,完全避免C,或者我是否需要在c中接收数据,然后将其发送到javascript中如何使用它(我目前不知道该怎么做)。
我相信当JS应用程序收到数据时,会触发某种事件(appmessage
,我认为),但我认为这只是来自C app?
因此,大多数情况下,我的困惑在于JS如何融入整个组合。如果有人能为我清楚,我会真诚地感激它。
编辑:我应该补充一点,我正在尝试使用cloudpebble.net中的pebble.js创建一个应用程序。
谢谢!
答案 0 :(得分:7)
注意: 下面的一些链接会转到Pebble API文档,在撰写本文时,只有在您登录后才能访问使用Pebble帐户的开发者网站。
Pebble开发入门可能有点压倒性。有许多活动部件,其中一些是您需要的,其中一部分您不会。以下是主要组件的快速概述:
用C语言编写的应用程序。您肯定需要编写其中一个。 (好吧,几乎肯定。请参阅下面关于SimplyJS的说明。)
这是在实际手表上运行的。在这里,您可能会创建windows,menus,也许可以与graphics合作。您可能会设置click handlers to handle button presses。
手表本身不能做很多有趣的事情。例如,它无法发出任何网络请求,因此无法与网络进行通信。它本身不能进行地理定位。你可以建立一个完全独立的表盘或计时器或简单的游戏。
除非您的应用完全在手表上运行,否则您还需要以下之一:
使用PebbleKit for iOS以Objective C 编写的iOS应用。
我对使用PebbleKit for Android或PebbleKit for iOS没有任何经验,但他们都有官方API文档:
这些都不能在CloudPebble.net中使用。
使用PebbleKitJS 编写的JavaScript应用,适用于 Android和iOS 。
由于此选项允许开发人员同时定位两个移动平台,因此它是我最喜欢的选项。我的感觉是许多其他开发者都同意。除非您需要访问PebbleKitJS提供的内容,否则我建议您使用它。
此处的JavaScript代码从手机上的官方Pebble应用程序中执行。从本质上讲,Pebble应用程序为每个手表应用程序都有一个沙盒JavaScript环境。如果你走这条路,你不构建配套的Android或iOS应用。官方Pebble应用程序有效地成为您的伴侣应用程序。
(请注意,在iOS上,JavaScript代码实际上必须捆绑在官方Pebble应用程序中。这会在发布您的应用程序后产生大约5-6天的时间段,iOS用户将收到消息#39; s"即将推出",而Android用户可以立即使用它。)
最后,如果你真的不想使用C,你可以使用Simply.js(一种不受支持的第三方工具)纯粹用JavaScript编写Pebble应用程序。我从未使用过这个,主要是因为你似乎可以only have one Simply.js app running on your watch at once:
我如何使用它?
你需要一个带有OS 2.0的Pebble。
- 编写一个Simply.js脚本并在线托管。
- 将Simply.js v0.3.2下载到您的卵石上。
- 转到" My Pebble"在新的官方Pebble手机应用程序。
- 点击Simply.js设置设备。
- 将URL放到脚本中并点击“保存”。†您的脚本应该立即运行。
- 玩你的卵石!
†如果你在Github上托管你的脚本,请使用脚本的原始URL。
为了让事情更加混乱,使用三种手机API中的任何一种,您都可以使用以下两种通讯API之一:
AppMessage
是开发人员可以使用的基础通信API:
AppMessage是一个双向消息传递子系统,支持手机应用程序和Pebble watchapps之间的通信。这是通过允许电话和watchapps交换任意组的键/值对来实现的。键/值对以Dictionary的形式存储,其布局留给应用程序开发人员定义。
它运作得相当好,但有时候工作可能有点棘手。如果您正在使用PebbleKitJS,请自由使用console.log
,因为没有调试器。
AppSync
是一个声称用于UI同步的更高级别的库:
AppSync是一个便利层,位于 AppMessage 之上,并作为AppMessage的UI同步层。通过这样做,AppSync可以更轻松地使用手机应用程序发送的消息来驱动watchapp UI中显示的信息。
AppSync维护和更新词典,并为您的应用程序提供回调(AppSyncTupleChangedCallback)例程,只要字典更改并且应用程序的UI更新,就会调用该例程。请注意,应用UI不会自动更新。要更新UI,您需要实现回调。
我还没有使用它,但是我要尝试将应用从AppMessage
迁移到AppSync
。即使您没有进行UI同步,它看起来也很有用。
除了官方指南和API文档外,Pebble还在SDK中提供了许多有用的示例应用程序。由于您似乎对JavaScript选项感兴趣,最有趣的可能是
Examples/pebblekit-js/quotes/
和Examples/pebblekit-js/weather/
。查看每个应用的src/<appname>.c
和src/js/pebble-js-app.js
个文件。