Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( Logger func(format string, args ...interface{}) Error = errors.NewClass("fcm") )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewDefaultClient ¶
func NewFcmClient ¶
func NewFcmClient(apiKey string, client HttpClient, store Store, options *ClientOptions) *Client
When options == nil, default values are used
func (*Client) Send ¶
func (c *Client) Send(ctx context.Context, m HttpMessage) (hr *HttpResponse, err error)
Sends HttpMessages, retries with exponential backoff, processes replies to the Store
type ClientOptions ¶
type ClientOptions struct {
MinBackoff time.Duration
MaxBackoff time.Duration
MaxRetryAttempts int
}
func DefaultClientOptions ¶
func DefaultClientOptions() *ClientOptions
type FcmClient ¶
type FcmClient interface {
Send(ctx context.Context, m HttpMessage) (hr *HttpResponse, err error)
}
type HttpClient ¶
type HttpMessage ¶
type HttpMessage struct {
// Just use registrionIds instead of To
RegistrationIds []string `json:"registration_ids,omitempty"`
Condition string `json:"condition,omitempty"`
CollapseKey string `json:"collapse_key,omitempty"`
Priority string `json:"priority,omitempty"`
ContentAvailable bool `json:"content_available,omitempty"`
MutableContent bool `json:"mutable_content,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.
func NewHttpMessage ¶
func NewHttpMessage(registrationIds []string, data Data, notif *Notification) *HttpMessage
type HttpResponse ¶
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.
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"`
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 ¶
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 Store ¶
type Store interface {
// Called when a registration token should be updated
Update(ctx context.Context, oldRegId, newRegId string) error
// Called when a registration token should be removed because the application
// was removed from the device, or an unrecoverable error occurred
Delete(ctx context.Context, regId string) error
}
Click to show internal directories.
Click to hide internal directories.