我已经用pebble做了一两天的实验,现在有点停滞不前。也就是说,我似乎不明白某些事情是如何联系在一起的。我想做的是从安卓系统上的一个应用程序中获取数据,并将其发送到pebble,然后让pebble用这些数据做一些有成效的事情。
我已经意识到,您在android应用程序中使用PebbleKit API,以便使用sendDataToPebble()
之类的东西与pebble进行通信。不过,在那之后,我不太确定该怎么办
使用cloudpebble.net,我用C语言创建了一个应用程序,使用pebble SDK来确认数据(使用他们网站上建议的处理程序)。然而,我最近发现,在整个组合中也可能有javascript,我只是不知道如何与js接口。
是否可以完全通过javascript完成所有数据的ack/nack,以及随后的数据处理/显示,完全避免使用C,或者我是否需要接收C中的数据,然后将其发送给javascript以供其使用(我目前不知道如何做)。
我相信当JS应用程序接收到数据时,会触发某种事件(我认为是appmessage
),然而,我认为这只是来自C应用程序?
因此,我的困惑主要在于JS是如何融入整个组合的。如果有人能帮我澄清这件事,我将衷心感谢。
编辑:我应该补充一点,我正试图在cloudpebble.net.中使用pebble.js创建一个应用程序
谢谢!
注意: 下面的一些链接指向Pebble API文档,在撰写本文时,只有使用Pebble帐户登录开发人员网站才能访问该文档
开始Pebble开发可能会有点不知所措。有很多运动部件,有些是你需要的,有些是不需要的。以下是主要组件的快速概述:
-
用C编写的应用程序。您肯定需要编写其中一个。(好吧,几乎可以肯定。请参阅下面关于SimplyJS的注释。)
这是在实际的手表上运行的。在这里,你可能会创建窗口、菜单,或者做一些图形处理。您可能会设置点击处理程序来处理按钮按下。
手表本身不能做很多有趣的事情。例如,它不能发出任何网络请求,因此无法与网络进行通信。它本身无法进行地理定位。不过,你可以构建一个完全独立的表盘、计时器或简单的游戏。
- 这个API可以在CloudPebble.net上使用
- API官方文件
-
除非你的应用程序完全在手表上运行,否则你还需要以下之一:
- 一个用Java编写的Android应用程序,使用适用于Android的PebbleKit
-
在Objective C中编写的iOS应用程序,使用适用于iOS的PebbleKit。
我没有使用Android版PebbleKit或iOS版Pebble Kit的任何经验,但它们都有官方的API文档:
- Android API PebbleKit文档
- 适用于iOS API的PebbleKit文档
这两个都不能从CloudPebble.net中使用。
-
使用PebbleKitJS编写的JavaScript应用程序,适用于Android和iOS。
因为这个选项可以让开发人员同时针对两个移动平台,所以它是我最喜欢的选项。我的感觉是许多其他开发人员都同意这一点。除非你需要访问PebbleKitJS提供的以外的东西,否则我建议你使用它
这里的JavaScript代码从您手机上的官方Pebble应用程序中执行。从本质上讲,Pebble应用程序为每个手表应用程序都有一个沙盒JavaScript环境。如果你走这条路,你就不会构建配套的Android或iOS应用程序。Pebble官方应用程序实际上成为您的伴侣应用程序。
- 这个API也可以在CloudPebble.net上使用
- 遗憾的是,目前Pebble还没有为PebbleKitJS提供API文档。您只获得了《使用Pebble JavaScript框架》指南和示例应用程序
(请注意,在iOS上,JavaScript代码实际上必须捆绑在官方Pebble应用程序中。这会在发布应用程序后产生大约5-6天的时间,iOS用户将收到"很快可用"的消息,而Android用户将能够立即使用它。)
-
最后,如果你真的不想使用C,你可以使用Simply.js(一种不受支持的第三方工具)纯用JavaScript编写Pebble应用程序。我从来没有用过这个,主要是因为你的手表上似乎只能同时运行一个Simply.js应用程序:
我如何使用它
您需要一个Pebble with OS 2.0。
- 编写Simply.js脚本并在线托管
- 将Simply.js v0.3.2下载到您的Pebble上
- 转到新的官方Pebble手机应用程序中的"我的Pebble">
- 点击Simply.js设置档
- 将URL放在脚本中,然后单击"保存"。†您的脚本应该立即运行
- 玩你的圆石
†如果您在Github上托管脚本,请使用脚本的原始URL。
为了让事情更加混乱,使用三个电话API中的任何一个,您都可以使用两个通信API中的一个:
-
AppMessage
是开发人员可以使用的基础通信API:AppMessage是一个双向消息传递子系统,可在手机应用程序和Pebble手表应用程序之间进行通信。这是通过允许手机和手表应用程序交换任意一组密钥/值对来实现的。键/值对以字典的形式存储,字典的布局由应用程序开发人员定义。
它工作得相当好,但有时工作起来可能有点棘手。如果您使用的是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
文件。