// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. [ { "namespace": "gcm", "description": "Use <code>chrome.gcm</code> to enable apps and extensions to send and receive messages through <a href='http://developer.android.com/google/gcm/'>Google Cloud Messaging</a>.", "properties": { "MAX_MESSAGE_SIZE": { "value": 4096, "description": "The maximum size (in bytes) of all key/value pairs in a message." } }, "functions": [ { "name": "register", "type": "function", "description": "Registers the application with GCM. The registration ID will be returned by the <code>callback</code>. If <code>register</code> is called again with the same list of <code>senderIds</code>, the same registration ID will be returned.", "parameters": [ { "name": "senderIds", "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "maxItems": 100, "description": "A list of server IDs that are allowed to send messages to the application. It should contain at least one and no more than 100 sender IDs." }, { "name": "callback", "type": "function", "description": "Function called when registration completes. It should check $(ref:runtime.lastError) for error when <code>registrationId</code> is empty.", "parameters": [ { "name": "registrationId", "type": "string", "description": "A registration ID assigned to the application by the GCM." } ] } ] }, { "name": "unregister", "type": "function", "description": "Unregisters the application from GCM.", "parameters": [ { "name": "callback", "type": "function", "description": "A function called after the unregistration completes. Unregistration was successful if $(ref:runtime.lastError) is not set.", "parameters": [] } ] }, { "name": "send", "type": "function", "description": "Sends a message according to its contents.", "parameters": [ { "name": "message", "type": "object", "description": "A message to send to the other party via GCM.", "properties": { "destinationId": { "type": "string", "minLength": 1, "description": "The ID of the server to send the message to as assigned by <a href='https://code.google.com/apis/console'>Google API Console</a>." }, "messageId": { "type": "string", "minLength": 1, "description": "The ID of the message. It must be unique for each message in scope of the applications. See the <a href='cloudMessagingV2#send_messages'>Cloud Messaging documentation</a> for advice for picking and handling an ID." }, "timeToLive": { "type": "integer", "minimum": 0, "maximum": 2419200, "optional": true, "description": "Time-to-live of the message in seconds. If it is not possible to send the message within that time, an onSendError event will be raised. A time-to-live of 0 indicates that the message should be sent immediately or fail if it's not possible. The maximum and a default value of time-to-live is 2419200 seconds (4 weeks)." }, "data": { "type": "object", "properties": {}, "additionalProperties": { "type": "string", "minLength": 1 }, "description": "Message data to send to the server. Case-insensitive <code>goog.</code> and <code>google</code>, as well as case-sensitive <code>collapse_key</code> are disallowed as key prefixes. Sum of all key/value pairs should not exceed $(ref:gcm.MAX_MESSAGE_SIZE)." } } }, { "name": "callback", "type": "function", "description": "A function called after the message is successfully queued for sending. $(ref:runtime.lastError) should be checked, to ensure a message was sent without problems.", "parameters": [ { "name": "messageId", "type": "string", "description": "The ID of the message that the callback was issued for." } ] } ] } ], "events": [ { "name": "onMessage", "type": "function", "description": "Fired when a message is received through GCM.", "parameters": [ { "name": "message", "type": "object", "description": "A message received from another party via GCM.", "properties": { "data": { "type": "object", "properties": {}, "additionalProperties": { "type": "string" }, "description": "The message data." }, "collapseKey": { "type": "string", "optional": true, "desctription": "The collapse key of a message. See <a href='cloudMessagingV2#collapsible_messages'>Collapsible Messages</a> section of Cloud Messaging documentation for details." } } } ] }, { "name": "onMessagesDeleted", "type": "function", "description": "Fired when a GCM server had to delete messages sent by an app server to the application. See <a href='cloudMessagingV2#messages_deleted_event'>Messages deleted event</a> section of Cloud Messaging documentation for details on handling this event." }, { "name": "onSendError", "type": "function", "description": "Fired when it was not possible to send a message to the GCM server.", "parameters": [ { "name": "error", "type": "object", "description": "An error related to sending a message raised by GCM.", "properties": { "errorMessage": { "type": "string", "description": "The error message describing the problem." }, "messageId": { "type": "string", "optional": true, "description": "The ID of the message with this error, if error is related to a specific message." }, "details": { "type": "object", "properties": {}, "additionalProperties": { "type": "string" }, "description": "Additional details related to the error, when available." } }, "description": "An error that occured while trying to send the message either in Chrome or on the GCM server. Application can retry sending the message with a reasonable backoff and possibly longer time-to-live." } ] } ] } ]