Pebble通信方法



我已经用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开发可能会有点不知所措。有很多运动部件,有些是你需要的,有些是不需要的。以下是主要组件的快速概述:

  1. 用C编写的应用程序。您肯定需要编写其中一个。(好吧,几乎可以肯定。请参阅下面关于SimplyJS的注释。)

    这是在实际的手表上运行的。在这里,你可能会创建窗口、菜单,或者做一些图形处理。您可能会设置点击处理程序来处理按钮按下。

    手表本身不能做很多有趣的事情。例如,它不能发出任何网络请求,因此无法与网络进行通信。它本身无法进行地理定位。不过,你可以构建一个完全独立的表盘、计时器或简单的游戏。

    • 这个API可以在CloudPebble.net上使用
    • API官方文件
  2. 除非你的应用程序完全在手表上运行,否则你还需要以下之一:

    • 一个用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用户将能够立即使用它。)

  3. 最后,如果你真的不想使用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中的一个:

  1. AppMessage是开发人员可以使用的基础通信API:

    AppMessage是一个双向消息传递子系统,可在手机应用程序和Pebble手表应用程序之间进行通信。这是通过允许手机和手表应用程序交换任意一组密钥/值对来实现的。键/值对以字典的形式存储,字典的布局由应用程序开发人员定义。

    它工作得相当好,但有时工作起来可能有点棘手。如果您使用的是PebbleKitJS,请自由使用console.log,因为没有调试器。

  2. 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>.csrc/js/pebble-js-app.js文件。

最新更新