pebble 开发
今年早些时候,Pebble宣布了其第三代智能手表Pebble Time ,这是由他们非常成功的Kickstarter活动资助的。 Pebble Time附带了一项称为“时间轴”的新功能,用于按时间轴上的时间顺序向用户显示信息(例如通知,新闻,提醒和事件)。 以前,Pebble要求开发人员编写本机应用程序以在Pebble上显示信息。 现在,开发人员可以通过公共REST API使用自己的私有服务器中的JSON直接使用JSON将信息推送到时间轴上。
如果您不熟悉Pebble Time,建议您通过复习一下Patrick Catanzariti的这篇文章 。
什么是时间表?
智能手机通知是即时的,代表当时恰好发生的交易。 根据定义,它们不能早晚到达。
Pebble Time附带了一项名为时间轴的新OS功能。 时间轴为您的通知带来了新的维度; 时间的维度。 时间轴不应与通知历史混淆。 时间轴允许第三方向您发送过去的通知和将来的通知; 您不需要立即知道但可能需要稍后查找的通知。 例如,您可能想查询早上什么时候离开家,或者什么时候日出,或者早些时候股市开盘的百分比,或者下一班从肯尼迪镇开出的火车。
信用:卵石
时间轴的优点在于,您几乎可以将任何信息转储到其中,无论它们多么微不足道,因为这些信息不会打扰用户。 例如,当计时器关闭时,鸡蛋计时器应用程序会在用户发出嗡嗡声时将事件推送到时间线上。 您永远无法说出用户何时要问他或她自己:“我何时为我今天早上烤的那只蛋糕设置计时器?”
当然,时间轴还可以保存重要的及时信息,例如火车时刻表或当地电影院的电影放映时间。 用户不必提前五分钟就收到火车离开的通知,而是可以提前观察下一班火车以及之后的火车。 所有这些信息都以静默方式推送到您的手表,并压缩到一个可滚动的界面中。
除了提供与生活有关的随机信息的渠道外,Pebble还会自动使用智能手机日历中的过去和将来的事件来填充时间线,以便您全面了解自己的一天。
信用:卵石
它是如何工作的?
Pebble将时间轴通知称为“固定”。 针脚在Pebble的服务器上进行了通用管理,并且Pebble设备设置为定期连接并下载新的针脚列表以显示在时间轴上。 Pebble的服务器可确保不会向用户发送过多的密码,并允许开发人员使用一个命令将密码推给多个用户。
所有的引脚都必须经过Pebble的服务器。 即使是想要在本地设备上显示图钉的本地应用程序,也必须首先将图钉推到服务器上,并允许设备按其常规更新时间表(15分钟)接收它。
密码的发行者可以更新和删除密码,Pebble的服务器会将更改推送到Pebble设备。
针脚的解剖
所有引脚均以JSON格式编写,并通过HTTPS推送到Pebble的服务器。
最小销的示例如下所示:
{
"id": "xxxxxxxxx",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "You left your house",
"tinyIcon": "system://images/NOTIFICATION_FLAG"
}
}
-
id
是每个事件的随机唯一字符串,并允许发行者更新和删除密码。 -
time
确定了它在时间轴上应出现的位置。 -
layout
包含将在屏幕上显示的信息。 -
type
定义了图钉是否应设置为通用,日历,运动,天气等事件。 -
title
是屏幕上显示的文本。 -
tinyIcon
来自允许的图标列表。
获取您的API密钥
Pebble要求您已将现有的Pebble应用程序上载到Pebble App Store ,以便将图钉推送到Pebble的服务器。 该应用程序实际上不需要执行任何操作。
需要一个应用程序,因为用户将需要有意下载您的应用程序以表示他们想要订阅您的图钉。 同样,删除您的应用的用户会自动从您的图钉中取消订阅。
如果您只打算为时间线进行开发而又没有时间创建精美的应用程序,请转到CloudPebble (Pebble的官方基于Web的应用程序开发环境),并使用其最小的模板创建一个简单的应用程序,然后在线编译然后将完成的应用程序下载到计算机上。 将您的应用程序上载到Pebble的开发人员门户后 ,请按照其网站上的说明获取特定于应用程序的API密钥。
免费学习PHP!
全面介绍PHP和MySQL,从而实现服务器端编程的飞跃。
原价$ 11.95 您的完全免费
有关其他帮助,请参阅本文,了解如何将Pebble应用提交到App Store 。
与Pebble的服务器通信时,您需要知道两个不同的身份验证令牌。 第一个是您的应用程序特定的API密钥,您可以将其用于向所有用户发送图钉。 第二个是特定于每个用户和应用程序组合的用户令牌。 将图钉推至Pebble时,只能根据您要向所有用户还是特定用户推图钉而使用其中之一。
用户令牌只能由在Pebble设备上运行的应用程序获取,而不会以其他方式公开。 这意味着,如果您以特定用户为目标,则需要开发一个Pebble应用程序,该应用程序读取用户令牌并从应用程序内部推送图钉或将用户令牌传递回服务器。
将图钉推到Pebble的服务器上
可以将销钉从您自己的服务器推到Pebble的服务器,也可以从安装在Pebble设备上的应用程序推到Pebble的服务器。 这是通过HTTPS完成的,HTTPS是一种广泛支持的开放协议。
这是一个将针脚从服务器推向所有用户的示例(出于说明目的,使用XMLHttpRequest
):
var xhr = new XMLHttpRequest();
xhr.open(
"PUT",
"https://timeline-api.getpebble.com/v1/user/pins/kennedytown-1395203",
true
);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-API-Key", "fbbd2e4c5a8e1dbef2b00b97bf83bdc9");
xhr.send(JSON.stringify(
{
"id": "kennedytown-1395203",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "Last train at 11:40 PM out of Kennedy Town",
"tinyIcon": "system://images/SCHEDULED_EVENT"
}
}
));
如果此代码在Pebble应用程序中运行,则应改用用户令牌,因为这些引脚仅适用于当前用户,并且您不希望在服务器外部公开应用程序API密钥。
在此示例中,我们将图钉从您的应用程序内推送给当前用户:
Pebble.getTimelineToken(
function (userToken) {
var xhr = new XMLHttpRequest();
xhr.open(
"PUT",
"https://timeline-api.getpebble.com/v1/user/pins/kennedytown-1395203",
true
);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-User-Token", userToken);
xhr.send(JSON.stringify(
{
"id": "kennedytown-1395203",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "Last train at 11:40 PM out of Kennedy Town",
"tinyIcon": "system://images/SCHEDULED_EVENT"
}
}
));
},
function (error) {}
);
向Pebble的服务器发出请求后,只需坐下来放松一下,等待Pebble设备更新自身,并将图钉放置在时间轴上。
自定义图钉的外观
不仅可以使用文字和图标,还可以自定义图钉。 先前的JSON的type
属性设置为genericPin
。 通过更改此设置,您可以使用6种引脚布局中的任何一种:
引脚布局为:
-
genericPin
—用于通用信息 -
calendarPin
日历事件 -
sportsPin
—用于显示来自不同团队的分数 -
weatherPin
—天气 -
genericReminder
用于提醒即将发生 -
genericNotification
主要用于立即通知
每种引脚类型都有其自己的属性集,可进一步自定义外观。 例如,运动版式允许您指定主队和客队是谁以及他们各自的得分。
您还可以通过将这些属性添加到layout
JSON来更改图钉的primaryColor
, secondaryColor
和backgroundColor
。 值是HTML十六进制格式的颜色(例如#0055FF
)。
添加图钉并提醒用户
尽管引脚被设计为安静的,并且要求用户主动查找信息,但是引脚还可以提供破坏性的通知。 通过向图钉添加属性,您可以控制图钉是在添加时还是在每次数据更新时提醒用户。 您还可以指定多达三个提醒,以在事件临近时提醒用户。 例如,您可以提醒用户足球比赛即将开始,当比分超出时提醒他们,如果比赛延迟则提醒他们,同时仍在时间轴上显示所有这些信息。
要在创建图钉后立即提醒用户,只需将createNotification
属性添加到您的JSON,然后再将其推送到Pebble服务器即可。 当Pebble设备接收到该图钉时,会将其添加到时间线并同时提醒用户:
{
"id": "uidxxxxxxxxx",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "You left your house",
"tinyIcon": "system://images/NOTIFICATION_FLAG"
},
createNotification: {
"layout": {
"type": "genericPin",
"title": "You JUST left your house",
"tinyIcon": "system://images/GENERIC_CONFIRMATION"
}
}
}
要在销钉更新后提醒用户,请向您的JSON添加一个updateNotification
属性,并添加一个time
属性以指示何时更新,例如:
{
"id": "uidxxxxxxxxx",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "You left your house",
"tinyIcon": "system://images/NOTIFICATION_FLAG"
},
updateNotification: {
"time": "2015-05-25T08:59:00Z",
"layout": {
"type": "genericPin",
"title": "The time you left your house has changed, how weird",
"tinyIcon": "system://images/GENERIC_CONFIRMATION"
}
}
}
更新图钉时,您不仅可以推送更改的数据,还需要再次推送所有信息。
使图钉打开您的应用
您可以通过将actions
属性添加到图钉来使图钉打开Pebble应用。 您可以指定多个操作,其中为每个操作分配一个整数参数,该参数将传递给您的应用程序。 当用户打开您的图钉时,他们将看到一个菜单,其中列出了您指定的操作。 当他们单击某个项目时,您的应用程序将启动。
{
"id": "uidxxxxxxxxx",
"time": "2015-05-25T08:42:00Z",
"layout": {
"type": "genericPin",
"title": "You left your house",
"tinyIcon": "system://images/NOTIFICATION_FLAG"
},
actions: [
{
"title": "Activate house alarm",
"type": "openWatchApp",
"launchCode": 15
},
{
"title": "Deactivate house alarm",
"type": "openWatchApp",
"launchCode": 22
}
]
}
摘要
在本文中,我们仅涉及了时间轴可以做什么的基础知识。 我没有涉及很多主题,读者可以选择自行浏览,例如删除图钉,按主题分组的图钉和错误处理。
时间轴是一种简单的技术(类似于RSS提要),但是更具个性化和可访问性,并且内容正确,可以成为必不可少的功能。
相关链接
pebble 开发