zoukankan      html  css  js  c++  java
  • 谷歌眼镜--订阅时间表通知

    谷歌镜,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的范围。

  • 相关阅读:
    centos8.0 安装 jenkins
    No match for argument: mysql-community-server Error: Unable to find a match: mysql-community-server
    Navicat 远程连接 centos8.0
    centos8.0 安装 mysql
    -bash: java-version: command not found
    centos8.0 安装 JDK1.8
    [Err] 1062
    android之Fragment基础详解(一)
    Android之RecyclerView(一)
    Android之ProgressBar
  • 原文地址:https://www.cnblogs.com/tinytiny/p/3140894.html
Copyright © 2011-2022 走看看