Documentation ¶
Overview ¶
Package fcm provides access to the Firebase Cloud Messaging API.
For product documentation, see: https://firebase.google.com/docs/cloud-messaging
Creating a client ¶
Usage example:
import "google.golang.org/api/fcm/v1" ... ctx := context.Background() fcmService, err := fcm.NewService(ctx)
In this example, Google Application Default Credentials are used for authentication.
For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
Other authentication options ¶
To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
fcmService, err := fcm.NewService(ctx, option.WithAPIKey("AIza..."))
To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
config := &oauth2.Config{...} // ... token, err := config.Exchange(ctx, ...) fcmService, err := fcm.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
See https://godoc.org/google.golang.org/api/option/ for details on options.
Index ¶
- Constants
- type AndroidConfig
- type AndroidNotification
- type ApnsConfig
- type ApnsFcmOptions
- type Message
- type Notification
- type ProjectsMessagesSendCall
- func (c *ProjectsMessagesSendCall) Context(ctx context.Context) *ProjectsMessagesSendCall
- func (c *ProjectsMessagesSendCall) Do(opts ...googleapi.CallOption) (*Message, error)
- func (c *ProjectsMessagesSendCall) Fields(s ...googleapi.Field) *ProjectsMessagesSendCall
- func (c *ProjectsMessagesSendCall) Header() http.Header
- type ProjectsMessagesService
- type ProjectsService
- type SendMessageRequest
- type Service
- type WebpushConfig
- type WebpushFcmOptions
Constants ¶
const (
// View and manage your data across Google Cloud Platform services
CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)
OAuth2 scopes used by this API.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AndroidConfig ¶
type AndroidConfig struct { // CollapseKey: An identifier of a group of messages that can be // collapsed, so that only // the last message gets sent when delivery can be resumed. A maximum of // 4 // different collapse keys is allowed at any given time. CollapseKey string `json:"collapseKey,omitempty"` // Data: Arbitrary key/value payload. If present, it will // override // google.firebase.fcm.v1.Message.data. Data map[string]string `json:"data,omitempty"` // Notification: Notification to send to android devices. Notification *AndroidNotification `json:"notification,omitempty"` // Priority: Message priority. Can take "normal" and "high" values. // For more information, see [Setting the priority of // a // message](https://goo.gl/GjONJv). // // Possible values: // "NORMAL" - Default priority for data messages. Normal priority // messages won't open // network connections on a sleeping device, and their delivery may // be // delayed to conserve the battery. For less time-sensitive messages, // such // as notifications of new email or other data to sync, choose // normal // delivery priority. // "HIGH" - Default priority for notification messages. FCM attempts // to deliver high // priority messages immediately, allowing the FCM service to wake // a // sleeping device when possible and open a network connection to your // app // server. Apps with instant messaging, chat, or voice call alerts, // for // example, generally need to open a network connection and make sure // FCM // delivers the message to the device without delay. Set high priority // if // the message is time-critical and requires the user's // immediate // interaction, but beware that setting your messages to high // priority // contributes more to battery drain compared with normal priority // messages. Priority string `json:"priority,omitempty"` // RestrictedPackageName: Package name of the application where the // registration token must match in // order to receive the message. RestrictedPackageName string `json:"restrictedPackageName,omitempty"` // Ttl: How long (in seconds) the message should be kept in FCM storage // if the // device is offline. The maximum time to live supported is 4 weeks, and // the // default value is 4 weeks if not set. Set it to 0 if want to send // the // message immediately. // In JSON format, the Duration type is encoded as a string rather than // an // object, where the string ends in the suffix "s" (indicating seconds) // and // is preceded by the number of seconds, with nanoseconds expressed // as // fractional seconds. For example, 3 seconds with 0 nanoseconds should // be // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond // should // be expressed in JSON format as "3.000000001s". The ttl will be // rounded down // to the nearest second. Ttl string `json:"ttl,omitempty"` // ForceSendFields is a list of field names (e.g. "CollapseKey") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "CollapseKey") to include // in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. However, any field with // an empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
AndroidConfig: Android specific options for messages sent through [FCM connection server](https://goo.gl/4GLdUl).
func (*AndroidConfig) MarshalJSON ¶
func (s *AndroidConfig) MarshalJSON() ([]byte, error)
type AndroidNotification ¶
type AndroidNotification struct { // Body: The notification's body text. If present, it will // override // google.firebase.fcm.v1.Notification.body. Body string `json:"body,omitempty"` // BodyLocArgs: Variable string values to be used in place of the format // specifiers in // body_loc_key to use to localize the body text to the user's // current // localization. // See [Formatting and Styling](https://goo.gl/MalYE3) for more // information. BodyLocArgs []string `json:"bodyLocArgs,omitempty"` // BodyLocKey: The key to the body string in the app's string resources // to use to localize // the body text to the user's current localization. // See [String Resources](https://goo.gl/NdFZGI) for more information. BodyLocKey string `json:"bodyLocKey,omitempty"` // ChannelId: The [notification's // channel // id](https://developer.android.com/guide/topics/ui/notifiers/no // tifications#ManageChannels) // (new in Android O). The app must create a channel with this channel // ID // before any notification with this channel ID is received. If you // don't send // this channel ID in the request, or if the channel ID provided has not // yet // been created by the app, FCM uses the channel ID specified in the // app // manifest. ChannelId string `json:"channelId,omitempty"` // ClickAction: The action associated with a user click on the // notification. // If specified, an activity with a matching intent filter is launched // when // a user clicks on the notification. ClickAction string `json:"clickAction,omitempty"` // Color: The notification's icon color, expressed in #rrggbb format. Color string `json:"color,omitempty"` // Icon: The notification's icon. // Sets the notification icon to myicon for drawable resource myicon. // If you don't send this key in the request, FCM displays the launcher // icon // specified in your app manifest. Icon string `json:"icon,omitempty"` // Sound: The sound to play when the device receives the // notification. // Supports "default" or the filename of a sound resource bundled in the // app. // Sound files must reside in /res/raw/. Sound string `json:"sound,omitempty"` // Tag: Identifier used to replace existing notifications in the // notification // drawer. // If not specified, each request creates a new notification. // If specified and a notification with the same tag is already being // shown, // the new notification replaces the existing one in the notification // drawer. Tag string `json:"tag,omitempty"` // Title: The notification's title. If present, it will // override // google.firebase.fcm.v1.Notification.title. Title string `json:"title,omitempty"` // TitleLocArgs: Variable string values to be used in place of the // format specifiers in // title_loc_key to use to localize the title text to the user's // current // localization. // See [Formatting and Styling](https://goo.gl/MalYE3) for more // information. TitleLocArgs []string `json:"titleLocArgs,omitempty"` // TitleLocKey: The key to the title string in the app's string // resources to use to // localize the title text to the user's current localization. // See [String Resources](https://goo.gl/NdFZGI) for more information. TitleLocKey string `json:"titleLocKey,omitempty"` // ForceSendFields is a list of field names (e.g. "Body") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Body") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
AndroidNotification: Notification to send to android devices.
func (*AndroidNotification) MarshalJSON ¶
func (s *AndroidNotification) MarshalJSON() ([]byte, error)
type ApnsConfig ¶
type ApnsConfig struct { // FcmOptions: Options for features provided by the FCM SDK for iOS. FcmOptions *ApnsFcmOptions `json:"fcmOptions,omitempty"` // Headers: HTTP request headers defined in Apple Push Notification // Service. Refer to // [APNs request headers](https://goo.gl/C6Yhia) for // supported headers, e.g. "apns-priority": "10". Headers map[string]string `json:"headers,omitempty"` // Payload: APNs payload as a JSON object, including both `aps` // dictionary and custom // payload. See [Payload Key Reference](https://goo.gl/32Pl5W). // If present, it overrides // google.firebase.fcm.v1.Notification.title // and google.firebase.fcm.v1.Notification.body. Payload googleapi.RawMessage `json:"payload,omitempty"` // ForceSendFields is a list of field names (e.g. "FcmOptions") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "FcmOptions") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
ApnsConfig: [Apple Push Notification Service](https://goo.gl/MXRTPa) specific options.
func (*ApnsConfig) MarshalJSON ¶
func (s *ApnsConfig) MarshalJSON() ([]byte, error)
type ApnsFcmOptions ¶
type ApnsFcmOptions struct { }
ApnsFcmOptions: Options for features provided by the FCM SDK for iOS.
type Message ¶
type Message struct { // Android: Input only. Android specific options for messages sent // through // [FCM connection server](https://goo.gl/4GLdUl). Android *AndroidConfig `json:"android,omitempty"` // Apns: Input only. [Apple Push Notification // Service](https://goo.gl/MXRTPa) // specific options. Apns *ApnsConfig `json:"apns,omitempty"` // Condition: Condition to send a message to, // e.g. "'foo' in topics && 'bar' in topics". Condition string `json:"condition,omitempty"` // Data: Input only. Arbitrary key/value payload. Data map[string]string `json:"data,omitempty"` // Name: Output Only. The identifier of the message sent, in the format // of // `projects/*/messages/{message_id}`. Name string `json:"name,omitempty"` // Notification: Input only. Basic notification template to use across // all platforms. Notification *Notification `json:"notification,omitempty"` // Token: Registration token to send a message to. Token string `json:"token,omitempty"` // Topic: Topic name to send a message to, e.g. "weather". // Note: "/topics/" prefix should not be provided. Topic string `json:"topic,omitempty"` // Webpush: Input only. [Webpush // protocol](https://tools.ietf.org/html/rfc8030) // options. Webpush *WebpushConfig `json:"webpush,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "Android") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Android") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
Message: Message to send by Firebase Cloud Messaging Service.
func (*Message) MarshalJSON ¶
type Notification ¶
type Notification struct { // Body: The notification's body text. Body string `json:"body,omitempty"` // Title: The notification's title. Title string `json:"title,omitempty"` // ForceSendFields is a list of field names (e.g. "Body") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Body") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
Notification: Basic notification template to use across all platforms.
func (*Notification) MarshalJSON ¶
func (s *Notification) MarshalJSON() ([]byte, error)
type ProjectsMessagesSendCall ¶
type ProjectsMessagesSendCall struct {
// contains filtered or unexported fields
}
func (*ProjectsMessagesSendCall) Context ¶
func (c *ProjectsMessagesSendCall) Context(ctx context.Context) *ProjectsMessagesSendCall
Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.
func (*ProjectsMessagesSendCall) Do ¶
func (c *ProjectsMessagesSendCall) Do(opts ...googleapi.CallOption) (*Message, error)
Do executes the "fcm.projects.messages.send" call. Exactly one of *Message or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *Message.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.
func (*ProjectsMessagesSendCall) Fields ¶
func (c *ProjectsMessagesSendCall) Fields(s ...googleapi.Field) *ProjectsMessagesSendCall
Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.
func (*ProjectsMessagesSendCall) Header ¶
func (c *ProjectsMessagesSendCall) Header() http.Header
Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.
type ProjectsMessagesService ¶
type ProjectsMessagesService struct {
// contains filtered or unexported fields
}
func NewProjectsMessagesService ¶
func NewProjectsMessagesService(s *Service) *ProjectsMessagesService
func (*ProjectsMessagesService) Send ¶
func (r *ProjectsMessagesService) Send(parentid string, sendmessagerequest *SendMessageRequest) *ProjectsMessagesSendCall
Send: Send a message to specified target (a registration token, topic or condition).
type ProjectsService ¶
type ProjectsService struct { Messages *ProjectsMessagesService // contains filtered or unexported fields }
func NewProjectsService ¶
func NewProjectsService(s *Service) *ProjectsService
type SendMessageRequest ¶
type SendMessageRequest struct { // Message: Required. Message to send. Message *Message `json:"message,omitempty"` // ValidateOnly: Flag for testing the request without actually // delivering the message. ValidateOnly bool `json:"validateOnly,omitempty"` // ForceSendFields is a list of field names (e.g. "Message") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Message") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
SendMessageRequest: Request to send a message to specified target.
func (*SendMessageRequest) MarshalJSON ¶
func (s *SendMessageRequest) MarshalJSON() ([]byte, error)
type Service ¶
type Service struct { BasePath string // API endpoint base URL UserAgent string // optional additional User-Agent fragment Projects *ProjectsService // contains filtered or unexported fields }
func New
deprecated
New creates a new Service. It uses the provided http.Client for requests.
Deprecated: please use NewService instead. To provide a custom HTTP client, use option.WithHTTPClient. If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func NewService ¶
NewService creates a new Service.
type WebpushConfig ¶
type WebpushConfig struct { // Data: Arbitrary key/value payload. If present, it will // override // google.firebase.fcm.v1.Message.data. Data map[string]string `json:"data,omitempty"` // FcmOptions: Options for features provided by the FCM SDK for Web. FcmOptions *WebpushFcmOptions `json:"fcmOptions,omitempty"` // Headers: HTTP headers defined in webpush protocol. Refer to // [Webpush protocol](https://tools.ietf.org/html/rfc8030#section-5) // for // supported headers, e.g. "TTL": "15". Headers map[string]string `json:"headers,omitempty"` // Notification: Web Notification options as a JSON object. Supports // Notification instance // properties as defined in [Web // Notification // API](https://developer.mozilla.org/en-US/docs/Web/API/Not // ification). If // present, "title" and "body" fields // override // [google.firebase.fcm.v1.Notification.title] // and // [google.firebase.fcm.v1.Notification.body]. Notification googleapi.RawMessage `json:"notification,omitempty"` // ForceSendFields is a list of field names (e.g. "Data") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Data") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
WebpushConfig: [Webpush protocol](https://tools.ietf.org/html/rfc8030) options.
func (*WebpushConfig) MarshalJSON ¶
func (s *WebpushConfig) MarshalJSON() ([]byte, error)
type WebpushFcmOptions ¶
type WebpushFcmOptions struct { // Link: The link to open when the user clicks on the notification. // For all URL values, HTTPS is required. Link string `json:"link,omitempty"` // ForceSendFields is a list of field names (e.g. "Link") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Link") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` }
WebpushFcmOptions: Options for features provided by the FCM SDK for Web.
func (*WebpushFcmOptions) MarshalJSON ¶
func (s *WebpushFcmOptions) MarshalJSON() ([]byte, error)