googlemessaging

package module
v0.0.0-...-7acae5f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

README

GCM Library for Go

Provides the following functionality for Google Cloud Messaging:

  1. Sending messages.
  2. Listening to receiving messages.

Documentation: http://godoc.org/github.com/google/go-gcm

Installation

$ go get github.com/google/go-gcm

Status

This library is in Alpha. We will make an effort to support the library, but we reserve the right to make incompatible changes when necessary.

Feedback

Please read CONTRIBUTING and raise issues here in Github.

Documentation

Overview

Package gcm provides send and receive GCM functionality.

Index

Constants

View Source
const (
	BaseURL              = "https://fcm.googleapis.com/v1"
	InstanceIdApiUrl     = "https://iid.googleapis.com/iid/info"
	FirebaseRequestScope = "https://www.googleapis.com/auth/firebase.messaging"
	DefaultContentType   = "application/json"
)
View Source
const (
	CCSAck     = "ack"
	CCSNack    = "nack"
	CCSControl = "control"
	CCSReceipt = "receipt"
)

Variables

View Source
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
)
View Source
var (
	ErrInvalidToken                = errors.New("invalid token")
	ErrDeviceNotFound              = errors.New("device not found")
	ErrInvalidRequest              = errors.New("invalid request")
	ErrInalidFCMServiceAccountFile = errors.New("invalid fcm service account file")
)

Functions

func NewFcmClient

func NewFcmClient(serviceAccountFileContent string, ctx context.Context) (*fcmClient, error)

Types

type Data

type Data map[string]interface{}

The data payload of a GCM message.

type ErrorResponse

type ErrorResponse struct {
	Error string `json:"error"`
}

type FcmAndroidConfig

type FcmAndroidConfig struct {
	CollapseKey           string                  `json:"collapse_key"`
	Priority              string                  `json:"priority,omitempty"`
	TimeToLive            *string                 `json:"ttl,omitempty"`
	RestrictedPackageName string                  `json:"restricted_package_name,omitempty"`
	Notification          *FcmAndroidNotification `json:"notification"`
}

type FcmAndroidNotification

type FcmAndroidNotification struct {
	Icon              string   `json:"icon,omitempty"`
	Color             string   `json:"color,omitempty"`
	Sound             string   `json:"sound,omitempty"`
	Tag               string   `json:"tag,omitempty"`
	ClickAction       string   `json:"click_action,omitempty"`
	BodyLocKey        string   `json:"body_loc_key,omitempty"`
	BodyLocArgs       []string `json:"body_loc_args,omitempty"`
	TitleLocKey       string   `json:"title_loc_key,omitempty"`
	TitleLocArgs      []string `json:"title_loc_args,omitempty"`
	Ticker            string   `json:"ticker,omitempty"`
	Sticky            bool     `json:"sticky,omitempty"`
	LocalOnly         bool     `json:"local_only,omitempty"`
	NotificationCount int      `json:"notification_count,omitempty"`
	ChannelId         string   `json:"channel_id,omitempty"`
}

type FcmData

type FcmData map[string]string

type FcmHttpMessage

type FcmHttpMessage struct {
	Token        string            `json:"token,omitempty"`
	Notification *FcmNotification  `json:"notification,omitempty"`
	Data         FcmData           `json:"data,omitempty"`
	Android      *FcmAndroidConfig `json:"android"`
}

type FcmMessageBody

type FcmMessageBody struct {
	Message *FcmHttpMessage `json:"message"`
}

type FcmNotification

type FcmNotification struct {
	Title string `json:"title"`
	Body  string `json:"body"`
	Image string `json:"image"`
}

type FcmSendHttpResponse

type FcmSendHttpResponse struct {
	Status int    `json:"-"`
	Name   string `json:"name"`
}

func SendPush

func SendPush(ctx context.Context, serviceAccountConfig string, m FcmMessageBody) (*FcmSendHttpResponse, error)

type HttpMessage

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

type HttpResponse struct {
	Status       int      `json:"-"`
	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

func SendHttp(ctx context.Context, platform Platform, apiKey string, m HttpMessage) (*HttpResponse, error)

Send a message using the HTTP GCM connection server.

type InstanceInformationResponse

type InstanceInformationResponse struct {
	AuthorizedEntity string `json:"authorizedEntity"`
}

type Notification

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"`
	AndroidChID  string `json:"android_channel_id,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 Platform

type Platform string
const (
	GCM Platform = "https://gcm-http.googleapis.com/gcm/send"
	FCM Platform = "https://fcm.googleapis.com/fcm/send"
)

type Result

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 ServiceAccount

type ServiceAccount struct {
	ServiceAccountType string `json:"type"`
	ProjectId          string `json:"project_id"`
	PrivateKeyId       string `json:"private_key_id"`
	PrivateKey         string `json:"private_key"`
	ClientEmail        string `json:"client_email"`
	ClientId           string `json:"client_id"`
	AuthUri            string `json:"auth_uri"`
	TokenUri           string `json:"token_uri"`
}

Directories

Path Synopsis
cmd
gcm-logger
Program gcm-logger logs and echoes as a GCM "server".
Program gcm-logger logs and echoes as a GCM "server".

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL