谷歌眼镜--订阅时间表通知

谷歌镜,API可以发送用户事件的通知玻璃器皿,其中包括:

  • 当用户选择菜单项
  • 当用户共享内容与接触
  • 用户的位置,每隔10分钟左右

要接收通知,你创建一个订阅,指定一个回调URL发生时接收通知。当你收到通知时,你可以随身携带所需的操作根据通知。

订阅时间表通知的更多信息,请参阅以下资源:

  • 开发人员指南
  • 参考文档

1、开发指南:

订阅

  1. 接收通知
  2. 通知类型
    1. 共享时间表项目
    2. 回复
    3. 删除
    4. 选择自定义菜单项
    5. 位置更新

镜API允许你 订阅 ,当用户需要发送一个时间轴项目的具体行动, 或用户位置时,已经更新的通知当您订阅通知,你提供一个回调URL处理通知。

注:在生产中,您的回调URL必须支持SSL。为发展宗旨,我们提供了一个 订阅代理服务器可以转发通知非SSL开发服务器。

接收通知

从镜像API发送一个POST请求包含一个JSON请求主体的认购端点的通知

 html

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "<TYPE>",
      "payload": "<PAYLOAD>"
    }
  ]
}

 

java

import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.mirror.model.Notification;

import java.io.IOException;
import java.io.InputStream;
// ...

public class MyClass {
  // ...

  /**
    * Parse a request body into a Notification object.
    *
    * @param requestBody The notification payload sent by the Mirror API.
    * @return Parsed notification payload if successful, {@code null} otherwise.
    */
  static Notification parseNotification(InputStream requestBody) {
    try {
      JsonFactory jsonFactory = new JacksonFactory();

      return jsonFactory.fromInputStream(requetBody, Notification.class);
    } catch (IOException e) {
      System.out.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}

 

python

import json

def parse_notification(request_body):
  """Parse a request body into a notification dict.

  Params:
    request_body: The notification payload sent by the Mirror API as a string.
  Returns:
    Dict representing the notification payload.
  """
  return json.load(request_body)

你的服务必须回应一个200 OK HTTP状态代码,如果没有发生错误的API 如果您的服务响应错误代码,镜像API可能会尝试重新发送该通知为您服务。

注:连接超时10秒后。如果需要一个漫长的过程,马上做出反应,并在另一个线程中做的过程。

通知类型

镜API发送一个不同的有效载荷为不同的事件通知。

共享时间表项目

用户共享的时间表用玻璃器皿项目。

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "SHARE"
    }
  ]
}

ITEMID属性是ID的共享的时间轴项目,您可以使用与Timeline.get获得时间轴项目。下面的例子显示了一个典型的带照片的时间表项目:

{
  "id": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "attachments": [
      {
          "contentType": "image/jpeg",
          "id": "<ATTACHMENT_ID>"
      }
  ],
  "recipients": [
      {
          "kind": "glass#contact",
          "source": "api:<SERVICE_ID>",
          "id": "<CONTACT_ID>",
          "displayName": "<CONTACT_DISPLAY_NAME>",
          "imageUrls": [
              "<CONTACT_ICON_URL>"
          ]
      }
  ]
}

 

注:与联系人共享内容的更多信息,请参阅联系

回复

用户已经回答了你的时间表项目使用内置的回复 菜单项:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "INSERT",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "REPLY"
    }
  ]
}

ITEMID属性设置该项目包含ID

  • inReplyTo属性设置为ID的时间轴项目,它是一个答复。
  • 文本属性设置为文本转录。
  • 收件人属性设置的时间轴项目创造者,它是一个回复,如果它存在。

例如:

{
  "kind": "glass#timelineItem",
  "id": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "inReplyTo": "3236e5b0-b282-4e00-9d7b-6b80e2f47f3d",
  "text": "This is a text reply",
  "recipients": [
    {
      "id": "CREATOR_ID",
      "displayName": "CREATOR_DISPLAY_NAME",
      "imageUrls": [
        "CREATOR_IMAGE_URL"
      ]
    }
  ]
}

删除

该用户已删除项目的时间表:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "DELETE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "DELETE"
    }
  ]
}

ITEMID属性设置的ID删除项。资料不再包含元数据以外的ID和 isDeleted财产的。

注意:如果用户删除一个项目从他们的时间表,建议您删除这些内容从你的系统太。

选择自定义菜单项

用户选择了一个 自定义菜单项 设置由您的服务:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "userActions": [
    {
      "type": "CUSTOM",
      "payload": "PING"
    }
  ]
}

ITEMID属性被设置为用户选择的菜单项的ID。

userActions数组包含了这个项目的用户自定义操作的列表。您的服务应如何处理这些相应的行动。

位置更新

为当前用户提供一个新的位置是:

{
  "collection": "locations",
  "itemId": "latest",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer"
}

当你的玻璃器皿接收位置更新,发送一个请求到的glass.locations.get 端点检索最新的已知位置。你的玻璃器皿接收位置,每10分钟更新。

注:正在位置信息需要 https://www.googleapis.com/auth/glass.location的范围。

 

 

 

posted @ 2013-06-17 18:55  tinytiny  阅读(323)  评论(0编辑  收藏  举报