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 AndroidFcmOptions
- type AndroidNotification
- type ApnsConfig
- type ApnsFcmOptions
- type Color
- type FcmOptions
- type LightSettings
- 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"` // DirectBootOk: If set to true, messages will be allowed to be // delivered to the app while // the device is in direct boot mode. See [Support Direct // Boot // mode](https://developer.android.com/training/articles/direct-boot // ). DirectBootOk bool `json:"directBootOk,omitempty"` // FcmOptions: Options for features provided by the FCM SDK for Android. FcmOptions *AndroidFcmOptions `json:"fcmOptions,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 AndroidFcmOptions ¶
type AndroidFcmOptions struct { // AnalyticsLabel: Label associated with the message's analytics data. AnalyticsLabel string `json:"analyticsLabel,omitempty"` // ForceSendFields is a list of field names (e.g. "AnalyticsLabel") 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. "AnalyticsLabel") 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:"-"` }
AndroidFcmOptions: Options for features provided by the FCM SDK for Android.
func (*AndroidFcmOptions) MarshalJSON ¶
func (s *AndroidFcmOptions) 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"` // DefaultLightSettings: If set to true, use the Android framework's // default LED light settings for // the notification. Default values are specified // in // [config.xml](https://android.googlesource.com/platform/frameworks/b // ase/+/master/core/res/res/values/config.xml). // If `default_light_settings` is set to true and `light_settings` is // also // set, the user-specified `light_settings` is used instead of // the // default value. DefaultLightSettings bool `json:"defaultLightSettings,omitempty"` // DefaultSound: If set to true, use the Android framework's default // sound for the // notification. Default values are specified // in // [config.xml](https://android.googlesource.com/platform/frameworks/b // ase/+/master/core/res/res/values/config.xml). DefaultSound bool `json:"defaultSound,omitempty"` // DefaultVibrateTimings: If set to true, use the Android framework's // default vibrate pattern for the // notification. Default values are specified // in // [config.xml](https://android.googlesource.com/platform/frameworks/b // ase/+/master/core/res/res/values/config.xml). // If `default_vibrate_timings` is set to true and `vibrate_timings` is // also // set, the default value is used instead of the // user-specified // `vibrate_timings`. DefaultVibrateTimings bool `json:"defaultVibrateTimings,omitempty"` // EventTime: Set the time that the event in the notification occurred. // Notifications in // the panel are sorted by this time. A point in time is represented // using // [protobuf.Timestamp](https://developers.google.com/protocol-buff // ers/docs/reference/java/com/google/protobuf/Timestamp). EventTime string `json:"eventTime,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"` // Image: Contains the URL of an image that is going to be displayed in // a // notification. If present, it will // override // google.firebase.fcm.v1.Notification.image. Image string `json:"image,omitempty"` // LightSettings: Settings to control the notification's LED blinking // rate and color if LED // is available on the device. The total blinking time is controlled by // the // OS. LightSettings *LightSettings `json:"lightSettings,omitempty"` // LocalOnly: Set whether or not this notification is relevant only to // the current // device. Some notifications can be bridged to other devices for // remote // display, such as a Wear OS watch. This hint can be set to recommend // this // notification not be bridged. See [Wear // OS // guides](https://developer.android.com/training/wearables/notificati // ons/bridger#existing-method-of-preventing-bridging) LocalOnly bool `json:"localOnly,omitempty"` // NotificationCount: Sets the number of items this notification // represents. May be displayed as // a badge count for launchers that support badging.See // [Notification // Badge](https://developer.android.com/training/notify-use // r/badges). // For example, this might be useful if you're using just one // notification to // represent multiple new messages but you want the count here to // represent // the number of total new messages. // If zero or unspecified, systems that support badging use the default, // which // is to increment a number displayed on the long-press menu each time a // new // notification arrives. NotificationCount int64 `json:"notificationCount,omitempty"` // NotificationPriority: Set the relative priority for this // notification. Priority is an indication // of how much of the user's attention should be consumed by // this // notification. Low-priority notifications may be hidden from the user // in // certain situations, while the user might be interrupted for // a // higher-priority notification. The effect of setting the same // priorities may // differ slightly on different platforms. Note this priority differs // from // `AndroidMessagePriority`. This priority is processed by the client // after // the message has been delivered, // whereas // [AndroidMessagePriority](https://firebase.google.com/docs/refe // rence/fcm/rest/v1/projects.messages#androidmessagepriority) // is an FCM concept that controls when the message is delivered. // // Possible values: // "PRIORITY_UNSPECIFIED" - If priority is unspecified, notification // priority is set to // `PRIORITY_DEFAULT`. // "PRIORITY_MIN" - Lowest notification priority. Notifications with // this `PRIORITY_MIN` // might not be shown to the user except under special // circumstances, // such as detailed notification logs. // "PRIORITY_LOW" - Lower notification priority. The UI may choose to // show the notifications // smaller, or at a different position in the list, compared // with // notifications with `PRIORITY_DEFAULT`. // "PRIORITY_DEFAULT" - Default notification priority. If the // application does not prioritize its // own notifications, use this value for all notifications. // "PRIORITY_HIGH" - Higher notification priority. Use this for more // important notifications // or alerts. The UI may choose to show these notifications larger, or // at a // different position in the notification lists, compared with // notifications // with `PRIORITY_DEFAULT`. // "PRIORITY_MAX" - Highest notification priority. Use this for the // application's most // important items that require the user's prompt attention or input. NotificationPriority string `json:"notificationPriority,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"` // Sticky: When set to false or unset, the notification is // automatically // dismissed when the user clicks it in the panel. When set to true, // the // notification persists even when the user clicks it. Sticky bool `json:"sticky,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"` // Ticker: Sets the "ticker" text, which is sent to accessibility // services. // Prior to API level 21 (`Lollipop`), sets the text that is displayed // in the // status bar when the notification first arrives. Ticker string `json:"ticker,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"` // VibrateTimings: Set the vibration pattern to use. Pass in an array // of // [protobuf.Duration](https://developers.google.com/protocol-buffers/ // docs/reference/google.protobuf#google.protobuf.Duration) // to turn on or off the vibrator. The first value indicates the // `Duration` to // wait before turning the vibrator on. The next value indicates // the // `Duration` to keep the vibrator on. Subsequent values alternate // between // `Duration` to turn the vibrator off and to turn the vibrator on. // If `vibrate_timings` is set and `default_vibrate_timings` is set to // `true`, // the default value is used instead of the user-specified // `vibrate_timings`. VibrateTimings []string `json:"vibrateTimings,omitempty"` // Visibility: Set // the // [Notification.visibility](https://developer.android.com/reference/ // android/app/Notification.html#visibility) // of the notification. // // Possible values: // "VISIBILITY_UNSPECIFIED" - If unspecified, default to // `Visibility.PRIVATE`. // "PRIVATE" - Show this notification on all lockscreens, but conceal // sensitive or // private information on secure lockscreens. // "PUBLIC" - Show this notification in its entirety on all // lockscreens. // "SECRET" - Do not reveal any part of this notification on a secure // lockscreen. Visibility string `json:"visibility,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://developer.apple.com/documentation/usernotific // ations/setting_up_a_remote_notification_server/sending_notification_re // quests_to_apns) // 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://developer.apple.com/documentation/usernotificat // ions/setting_up_a_remote_notification_server/generating_a_remote_notif // ication). // 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 { // AnalyticsLabel: Label associated with the message's analytics data. AnalyticsLabel string `json:"analyticsLabel,omitempty"` // Image: Contains the URL of an image that is going to be displayed in // a // notification. If present, it will // override // google.firebase.fcm.v1.Notification.image. Image string `json:"image,omitempty"` // ForceSendFields is a list of field names (e.g. "AnalyticsLabel") 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. "AnalyticsLabel") 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:"-"` }
ApnsFcmOptions: Options for features provided by the FCM SDK for iOS.
func (*ApnsFcmOptions) MarshalJSON ¶
func (s *ApnsFcmOptions) MarshalJSON() ([]byte, error)
type Color ¶
type Color struct { // Alpha: The fraction of this color that should be applied to the // pixel. That is, // the final pixel color is defined by the equation: // // pixel color = alpha * (this color) + (1.0 - alpha) * (background // color) // // This means that a value of 1.0 corresponds to a solid color, // whereas // a value of 0.0 corresponds to a completely transparent color. // This // uses a wrapper message rather than a simple float scalar so that it // is // possible to distinguish between a default value and the value being // unset. // If omitted, this color object is to be rendered as a solid color // (as if the alpha value had been explicitly given with a value of // 1.0). Alpha float64 `json:"alpha,omitempty"` // Blue: The amount of blue in the color as a value in the interval [0, // 1]. Blue float64 `json:"blue,omitempty"` // Green: The amount of green in the color as a value in the interval // [0, 1]. Green float64 `json:"green,omitempty"` // Red: The amount of red in the color as a value in the interval [0, // 1]. Red float64 `json:"red,omitempty"` // ForceSendFields is a list of field names (e.g. "Alpha") 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. "Alpha") 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:"-"` }
Color: Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of "java.awt.Color" in Java; it can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" method in iOS; and, with just a little work, it can be easily formatted into a CSS "rgba()" string in JavaScript, as well.
Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space.
Example (Java):
import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ...
Example (iOS / Obj-C):
// ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue
alpha:alpha];
} static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue
alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor_(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor_ = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...
func (*Color) MarshalJSON ¶
func (*Color) UnmarshalJSON ¶
type FcmOptions ¶
type FcmOptions struct { // AnalyticsLabel: Label associated with the message's analytics data. AnalyticsLabel string `json:"analyticsLabel,omitempty"` // ForceSendFields is a list of field names (e.g. "AnalyticsLabel") 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. "AnalyticsLabel") 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:"-"` }
FcmOptions: Platform independent options for features provided by the FCM SDKs.
func (*FcmOptions) MarshalJSON ¶
func (s *FcmOptions) MarshalJSON() ([]byte, error)
type LightSettings ¶
type LightSettings struct { // Color: Required. Set `color` of the LED // with // [google.type.Color](https://github.com/googleapis/googleapis/blob // /master/google/type/color.proto). Color *Color `json:"color,omitempty"` // LightOffDuration: Required. Along with `light_on_duration `, define // the blink rate of LED // flashes. Resolution defined // by // [proto.Duration](https://developers.google.com/protocol-buffers/doc // s/reference/google.protobuf#google.protobuf.Duration) LightOffDuration string `json:"lightOffDuration,omitempty"` // LightOnDuration: Required. Along with `light_off_duration`, define // the blink rate of LED // flashes. Resolution defined // by // [proto.Duration](https://developers.google.com/protocol-buffers/doc // s/reference/google.protobuf#google.protobuf.Duration) LightOnDuration string `json:"lightOnDuration,omitempty"` // ForceSendFields is a list of field names (e.g. "Color") 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. "Color") 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:"-"` }
LightSettings: Settings to control notification LED.
func (*LightSettings) MarshalJSON ¶
func (s *LightSettings) MarshalJSON() ([]byte, error)
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. The key should not be // a reserved // word ("from", "message_type", or any word starting with "google" or // "gcm"). Data map[string]string `json:"data,omitempty"` // FcmOptions: Input only. Template for FCM SDK feature options to use // across all // platforms. FcmOptions *FcmOptions `json:"fcmOptions,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"` // Image: Contains the URL of an image that is going to be downloaded on // the device // and displayed in a notification. // JPEG, PNG, BMP have full support across platforms. Animated GIF and // video // only work on iOS. WebP and HEIF have varying levels of support // across // platforms and platform versions. // Android has 1MB image size limit. // Quota usage and implications/costs for hosting image on Firebase // Storage: // https://firebase.google.com/pricing Image string `json:"image,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 { // AnalyticsLabel: Label associated with the message's analytics data. AnalyticsLabel string `json:"analyticsLabel,omitempty"` // 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. "AnalyticsLabel") 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. "AnalyticsLabel") 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)