go-gcm: github.com/google/go-gcm Index | Files

package gcm

import "github.com/google/go-gcm"

Package gcm provides send and receive GCM functionality.

Index

Package Files

gcm.go

Constants

const (
    CCSAck     = "ack"
    CCSNack    = "nack"
    CCSControl = "control"
    CCSReceipt = "receipt"
)

Variables

var (
    // DebugMode determines whether to have verbose logging.
    DebugMode = false
    // Default Min and Max delay for backoff.
    DefaultMinBackoff = 1 * time.Second
    DefaultMaxBackoff = 10 * time.Second
)

func Listen Uses

func Listen(senderId, apiKey string, h MessageHandler, stop <-chan bool) error

Listen blocks and connects to GCM waiting for messages, calling the handler for CCS message that can be of interest to the listener: upstream messages, delivery receipt notifications, errors. An optional stop channel can be provided to stop listening.

func SendXmpp Uses

func SendXmpp(senderId, apiKey string, m XmppMessage) (string, int, error)

SendXmpp sends a message using the XMPP GCM connection server.

type CcsMessage Uses

type CcsMessage struct {
    From             string `json:"from, omitempty"`
    MessageId        string `json:"message_id, omitempty"`
    MessageType      string `json:"message_type, omitempty"`
    RegistrationId   string `json:"registration_id,omitempty"`
    Error            string `json:"error,omitempty"`
    ErrorDescription string `json:"error_description,omitempty"`
    Category         string `json:"category, omitempty"`
    Data             Data   `json:"data,omitempty"`
    ControlType      string `json:"control_type,omitempty"`
}

CcsMessage is an Xmpp message sent from CCS.

type Data Uses

type Data map[string]interface{}

The data payload of a GCM message.

type HttpMessage Uses

type HttpMessage struct {
    To                    string        `json:"to,omitempty"`
    RegistrationIds       []string      `json:"registration_ids,omitempty"`
    CollapseKey           string        `json:"collapse_key,omitempty"`
    Priority              string        `json:"priority,omitempty"`
    ContentAvailable      bool          `json:"content_available,omitempty"`
    DelayWhileIdle        bool          `json:"delay_while_idle,omitempty"`
    TimeToLive            *uint         `json:"time_to_live,omitempty"`
    RestrictedPackageName string        `json:"restricted_package_name,omitempty"`
    DryRun                bool          `json:"dry_run,omitempty"`
    Data                  Data          `json:"data,omitempty"`
    Notification          *Notification `json:"notification,omitempty"`
}

A GCM Http message.

type HttpResponse Uses

type HttpResponse struct {
    MulticastId  int      `json:"multicast_id,omitempty"`
    Success      uint     `json:"success,omitempty"`
    Failure      uint     `json:"failure,omitempty"`
    CanonicalIds uint     `json:"canonical_ids,omitempty"`
    Results      []Result `json:"results,omitempty"`
    MessageId    int      `json:"message_id,omitempty"`
    Error        string   `json:"error,omitempty"`
}

HttpResponse is the GCM connection server response to an HTTP downstream message request.

func SendHttp Uses

func SendHttp(apiKey string, m HttpMessage) (*HttpResponse, error)

Send a message using the HTTP GCM connection server.

type MessageHandler Uses

type MessageHandler func(cm CcsMessage) error

MessageHandler is the type for a function that handles a CCS message. The CCS message can be an upstream message (device to server) or a message from CCS (e.g. a delivery receipt).

type Notification Uses

type Notification struct {
    Title        string `json:"title,omitempty"`
    Body         string `json:"body,omitempty"`
    Icon         string `json:"icon,omitempty"`
    Sound        string `json:"sound,omitempty"`
    Badge        string `json:"badge,omitempty"`
    Tag          string `json:"tag,omitempty"`
    Color        string `json:"color,omitempty"`
    ClickAction  string `json:"click_action,omitempty"`
    BodyLocKey   string `json:"body_loc_key,omitempty"`
    BodyLocArgs  string `json:"body_loc_args,omitempty"`
    TitleLocArgs string `json:"title_loc_args,omitempty"`
    TitleLocKey  string `json:"title_loc_key,omitempty"`
}

The notification payload of a GCM message.

type Result Uses

type Result struct {
    MessageId      string `json:"message_id,omitempty"`
    RegistrationId string `json:"registration_id,omitempty"`
    Error          string `json:"error,omitempty"`
}

Result represents the status of a processed Http message.

type XmppMessage Uses

type XmppMessage struct {
    To                       string        `json:"to,omitempty"`
    MessageId                string        `json:"message_id"`
    MessageType              string        `json:"message_type,omitempty"`
    CollapseKey              string        `json:"collapse_key,omitempty"`
    Priority                 string        `json:"priority,omitempty"`
    ContentAvailable         bool          `json:"content_available,omitempty"`
    DelayWhileIdle           bool          `json:"delay_while_idle,omitempty"`
    TimeToLive               *uint         `json:"time_to_live,omitempty"`
    DeliveryReceiptRequested bool          `json:"delivery_receipt_requested,omitempty"`
    DryRun                   bool          `json:"dry_run,omitempty"`
    Data                     Data          `json:"data,omitempty"`
    Notification             *Notification `json:"notification,omitempty"`
}

A GCM Xmpp message.

Package gcm imports 12 packages (graph) and is imported by 8 packages. Updated 2019-07-20. Refresh now. Tools for package owners.