go: firebase.google.com/go/messaging Index | Files

package messaging

import "firebase.google.com/go/messaging"

Package messaging contains functions for sending messages and managing device subscriptions with Firebase Cloud Messaging (FCM).

Index

Package Files

messaging.go messaging_utils.go

func IsInternal Uses

func IsInternal(err error) bool

IsInternal checks if the given error was due to an internal server error.

func IsInvalidAPNSCredentials Uses

func IsInvalidAPNSCredentials(err error) bool

IsInvalidAPNSCredentials checks if the given error was due to invalid APNS certificate or auth key.

func IsInvalidArgument Uses

func IsInvalidArgument(err error) bool

IsInvalidArgument checks if the given error was due to an invalid argument in the request.

func IsMessageRateExceeded Uses

func IsMessageRateExceeded(err error) bool

IsMessageRateExceeded checks if the given error was due to the client exceeding a quota.

func IsMismatchedCredential Uses

func IsMismatchedCredential(err error) bool

IsMismatchedCredential checks if the given error was due to an invalid credential or permission error.

func IsRegistrationTokenNotRegistered Uses

func IsRegistrationTokenNotRegistered(err error) bool

IsRegistrationTokenNotRegistered checks if the given error was due to a registration token that became invalid.

func IsServerUnavailable Uses

func IsServerUnavailable(err error) bool

IsServerUnavailable checks if the given error was due to the backend server being temporarily unavailable.

func IsTooManyTopics Uses

func IsTooManyTopics(err error) bool

IsTooManyTopics checks if the given error was due to the client exceeding the allowed number of topics.

func IsUnknown Uses

func IsUnknown(err error) bool

IsUnknown checks if the given error was due to unknown error returned by the backend server.

type APNSConfig Uses

type APNSConfig struct {
    Headers map[string]string `json:"headers,omitempty"`
    Payload *APNSPayload      `json:"payload,omitempty"`
}

APNSConfig contains messaging options specific to the Apple Push Notification Service (APNS).

See https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html for more details on supported headers and payload keys.

type APNSPayload Uses

type APNSPayload struct {
    Aps        *Aps                   `json:"aps,omitempty"`
    CustomData map[string]interface{} `json:"-"`
}

APNSPayload is the payload that can be included in an APNS message.

The payload mainly consists of the aps dictionary. Additionally it may contain arbitrary key-values pairs as custom data fields.

See https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html for a full list of supported payload fields.

func (*APNSPayload) MarshalJSON Uses

func (p *APNSPayload) MarshalJSON() ([]byte, error)

MarshalJSON marshals an APNSPayload into JSON (for internal use only).

func (*APNSPayload) UnmarshalJSON Uses

func (p *APNSPayload) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into an APNSPayload (for internal use only).

type AndroidConfig Uses

type AndroidConfig struct {
    CollapseKey           string               `json:"collapse_key,omitempty"`
    Priority              string               `json:"priority,omitempty"` // one of "normal" or "high"
    TTL                   *time.Duration       `json:"-"`
    RestrictedPackageName string               `json:"restricted_package_name,omitempty"`
    Data                  map[string]string    `json:"data,omitempty"` // if specified, overrides the Data field on Message type
    Notification          *AndroidNotification `json:"notification,omitempty"`
}

AndroidConfig contains messaging options specific to the Android platform.

func (*AndroidConfig) MarshalJSON Uses

func (a *AndroidConfig) MarshalJSON() ([]byte, error)

MarshalJSON marshals an AndroidConfig into JSON (for internal use only).

func (*AndroidConfig) UnmarshalJSON Uses

func (a *AndroidConfig) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into an AndroidConfig (for internal use only).

type AndroidNotification Uses

type AndroidNotification struct {
    Title        string   `json:"title,omitempty"` // if specified, overrides the Title field of the Notification type
    Body         string   `json:"body,omitempty"`  // if specified, overrides the Body field of the Notification type
    Icon         string   `json:"icon,omitempty"`
    Color        string   `json:"color,omitempty"` // notification color in #RRGGBB format
    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"`
    ChannelID    string   `json:"channel_id,omitempty"`
}

AndroidNotification is a notification to send to Android devices.

type Aps Uses

type Aps struct {
    AlertString      string                 `json:"-"`
    Alert            *ApsAlert              `json:"-"`
    Badge            *int                   `json:"badge,omitempty"`
    Sound            string                 `json:"-"`
    CriticalSound    *CriticalSound         `json:"-"`
    ContentAvailable bool                   `json:"-"`
    MutableContent   bool                   `json:"-"`
    Category         string                 `json:"category,omitempty"`
    ThreadID         string                 `json:"thread-id,omitempty"`
    CustomData       map[string]interface{} `json:"-"`
}

Aps represents the aps dictionary that may be included in an APNSPayload.

Alert may be specified as a string (via the AlertString field), or as a struct (via the Alert field).

func (*Aps) MarshalJSON Uses

func (a *Aps) MarshalJSON() ([]byte, error)

MarshalJSON marshals an Aps into JSON (for internal use only).

func (*Aps) UnmarshalJSON Uses

func (a *Aps) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into an Aps (for internal use only).

type ApsAlert Uses

type ApsAlert struct {
    Title           string   `json:"title,omitempty"` // if specified, overrides the Title field of the Notification type
    SubTitle        string   `json:"subtitle,omitempty"`
    Body            string   `json:"body,omitempty"` // if specified, overrides the Body field of the Notification type
    LocKey          string   `json:"loc-key,omitempty"`
    LocArgs         []string `json:"loc-args,omitempty"`
    TitleLocKey     string   `json:"title-loc-key,omitempty"`
    TitleLocArgs    []string `json:"title-loc-args,omitempty"`
    SubTitleLocKey  string   `json:"subtitle-loc-key,omitempty"`
    SubTitleLocArgs []string `json:"subtitle-loc-args,omitempty"`
    ActionLocKey    string   `json:"action-loc-key,omitempty"`
    LaunchImage     string   `json:"launch-image,omitempty"`
}

ApsAlert is the alert payload that can be included in an Aps.

See https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html for supported fields.

type Client Uses

type Client struct {
    // contains filtered or unexported fields
}

Client is the interface for the Firebase Cloud Messaging (FCM) service.

func NewClient Uses

func NewClient(ctx context.Context, c *internal.MessagingConfig) (*Client, error)

NewClient creates a new instance of the Firebase Cloud Messaging Client.

This function can only be invoked from within the SDK. Client applications should access the the messaging service through firebase.App.

func (*Client) Send Uses

func (c *Client) Send(ctx context.Context, message *Message) (string, error)

Send sends a Message to Firebase Cloud Messaging.

The Message must specify exactly one of Token, Topic and Condition fields. FCM will customize the message for each target platform based on the arguments specified in the Message.

func (*Client) SendDryRun Uses

func (c *Client) SendDryRun(ctx context.Context, message *Message) (string, error)

SendDryRun sends a Message to Firebase Cloud Messaging in the dry run (validation only) mode.

This function does not actually deliver the message to target devices. Instead, it performs all the SDK-level and backend validations on the message, and emulates the send operation.

func (*Client) SubscribeToTopic Uses

func (c *Client) SubscribeToTopic(ctx context.Context, tokens []string, topic string) (*TopicManagementResponse, error)

SubscribeToTopic subscribes a list of registration tokens to a topic.

The tokens list must not be empty, and have at most 1000 tokens.

func (*Client) UnsubscribeFromTopic Uses

func (c *Client) UnsubscribeFromTopic(ctx context.Context, tokens []string, topic string) (*TopicManagementResponse, error)

UnsubscribeFromTopic unsubscribes a list of registration tokens from a topic.

The tokens list must not be empty, and have at most 1000 tokens.

type CriticalSound Uses

type CriticalSound struct {
    Critical bool    `json:"-"`
    Name     string  `json:"name,omitempty"`
    Volume   float64 `json:"volume,omitempty"`
}

CriticalSound is the sound payload that can be included in an Aps.

func (*CriticalSound) MarshalJSON Uses

func (cs *CriticalSound) MarshalJSON() ([]byte, error)

MarshalJSON marshals a CriticalSound into JSON (for internal use only).

func (*CriticalSound) UnmarshalJSON Uses

func (cs *CriticalSound) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into a CriticalSound (for internal use only).

type ErrorInfo Uses

type ErrorInfo struct {
    Index  int
    Reason string
}

ErrorInfo is a topic management error.

type Message Uses

type Message struct {
    Data         map[string]string `json:"data,omitempty"`
    Notification *Notification     `json:"notification,omitempty"`
    Android      *AndroidConfig    `json:"android,omitempty"`
    Webpush      *WebpushConfig    `json:"webpush,omitempty"`
    APNS         *APNSConfig       `json:"apns,omitempty"`
    Token        string            `json:"token,omitempty"`
    Topic        string            `json:"-"`
    Condition    string            `json:"condition,omitempty"`
}

Message to be sent via Firebase Cloud Messaging.

Message contains payload data, recipient information and platform-specific configuration options. A Message must specify exactly one of Token, Topic or Condition fields. Apart from that a Message may specify any combination of Data, Notification, Android, Webpush and APNS fields. See https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages for more details on how the backend FCM servers handle different message parameters.

func (*Message) MarshalJSON Uses

func (m *Message) MarshalJSON() ([]byte, error)

MarshalJSON marshals a Message into JSON (for internal use only).

func (*Message) UnmarshalJSON Uses

func (m *Message) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into a Message (for internal use only).

type Notification Uses

type Notification struct {
    Title string `json:"title,omitempty"`
    Body  string `json:"body,omitempty"`
}

Notification is the basic notification template to use across all platforms.

type TopicManagementResponse Uses

type TopicManagementResponse struct {
    SuccessCount int
    FailureCount int
    Errors       []*ErrorInfo
}

TopicManagementResponse is the result produced by topic management operations.

TopicManagementResponse provides an overview of how many input tokens were successfully handled, and how many failed. In case of failures, the Errors list provides specific details concerning each error.

type WebpushConfig Uses

type WebpushConfig struct {
    Headers      map[string]string    `json:"headers,omitempty"`
    Data         map[string]string    `json:"data,omitempty"`
    Notification *WebpushNotification `json:"notification,omitempty"`
    FcmOptions   *WebpushFcmOptions   `json:"fcmOptions,omitempty"`
}

WebpushConfig contains messaging options specific to the WebPush protocol.

See https://tools.ietf.org/html/rfc8030#section-5 for additional details, and supported headers.

type WebpushFcmOptions Uses

type WebpushFcmOptions struct {
    Link string `json:"link,omitempty"`
}

WebpushFcmOptions contains additional options for features provided by the FCM web SDK.

type WebpushNotification Uses

type WebpushNotification struct {
    Actions            []*WebpushNotificationAction `json:"actions,omitempty"`
    Title              string                       `json:"title,omitempty"` // if specified, overrides the Title field of the Notification type
    Body               string                       `json:"body,omitempty"`  // if specified, overrides the Body field of the Notification type
    Icon               string                       `json:"icon,omitempty"`
    Badge              string                       `json:"badge,omitempty"`
    Direction          string                       `json:"dir,omitempty"` // one of 'ltr' or 'rtl'
    Data               interface{}                  `json:"data,omitempty"`
    Image              string                       `json:"image,omitempty"`
    Language           string                       `json:"lang,omitempty"`
    Renotify           bool                         `json:"renotify,omitempty"`
    RequireInteraction bool                         `json:"requireInteraction,omitempty"`
    Silent             bool                         `json:"silent,omitempty"`
    Tag                string                       `json:"tag,omitempty"`
    TimestampMillis    *int64                       `json:"timestamp,omitempty"`
    Vibrate            []int                        `json:"vibrate,omitempty"`
    CustomData         map[string]interface{}
}

WebpushNotification is a notification to send via WebPush protocol.

See https://developer.mozilla.org/en-US/docs/Web/API/notification/Notification for additional details.

func (*WebpushNotification) MarshalJSON Uses

func (n *WebpushNotification) MarshalJSON() ([]byte, error)

MarshalJSON marshals a WebpushNotification into JSON (for internal use only).

func (*WebpushNotification) UnmarshalJSON Uses

func (n *WebpushNotification) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a JSON string into a WebpushNotification (for internal use only).

type WebpushNotificationAction Uses

type WebpushNotificationAction struct {
    Action string `json:"action,omitempty"`
    Title  string `json:"title,omitempty"`
    Icon   string `json:"icon,omitempty"`
}

WebpushNotificationAction represents an action that can be performed upon receiving a WebPush notification.

Package messaging imports 12 packages (graph) and is imported by 10 packages. Updated 2019-01-21. Refresh now. Tools for package owners.