Documentation
¶
Index ¶
- Constants
- Variables
- func DefaultHTTPClient(host, accessToken string) fastshot.ClientHttpMethods
- type ClientConfig
- type DeviceNotRegisteredError
- type ExponentPushToken
- type MessageRateExceededError
- type MessageTooBigError
- type PushClient
- type PushMessage
- type PushResponse
- type PushResponseError
- type PushServerError
- type Response
Constants ¶
const ( // DefaultPriority is the standard priority used in PushMessage DefaultPriority = "default" // NormalPriority is a priority used in PushMessage NormalPriority = "normal" // HighPriority is a priority used in PushMessage HighPriority = "high" )
const ( // DefaultHost is the default Expo host DefaultHost = "https://exp.host" // DefaultBaseAPIURL is the default path for API requests DefaultBaseAPIURL = "/--/api/v2" )
const ErrorDeviceNotRegistered = "DeviceNotRegistered"
ErrorDeviceNotRegistered indicates the token is invalid
const ErrorMessageRateExceeded = "MessageRateExceeded"
ErrorMessageRateExceeded indicates messages have been sent too frequently
const ErrorMessageTooBig = "MessageTooBig"
ErrorMessageTooBig indicates the message went over payload size of 4096 bytes
const SuccessStatus = "ok"
SuccessStatus is the status returned from Expo on a success
Variables ¶
var ErrMalformedToken = errors.New("token should start with ExponentPushToken")
ErrMalformedToken is returned if a token does not start with 'ExponentPushToken'
Functions ¶
func DefaultHTTPClient ¶
func DefaultHTTPClient(host, accessToken string) fastshot.ClientHttpMethods
Types ¶
type ClientConfig ¶
type ClientConfig struct { Host string APIURL string AccessToken string HTTPClient fastshot.ClientHttpMethods }
ClientConfig specifies params that can optionally be specified for alternate Expo config and path setup when sending API requests
type DeviceNotRegisteredError ¶
type DeviceNotRegisteredError struct {
PushResponseError
}
DeviceNotRegisteredError is raised when the push token is invalid To handle this error, you should stop sending messages to this token.
type ExponentPushToken ¶
type ExponentPushToken string
ExponentPushToken is a valid Expo push token
func NewExponentPushToken ¶
func NewExponentPushToken(token string) (ExponentPushToken, error)
NewExponentPushToken returns a token and may return an error if the input token is invalid
type MessageRateExceededError ¶
type MessageRateExceededError struct {
PushResponseError
}
MessageRateExceededError is raised when you are sending messages too frequently to a device You should implement exponential backoff and slowly retry sending messages.
type MessageTooBigError ¶
type MessageTooBigError struct {
PushResponseError
}
MessageTooBigError is raised when the notification was too large. On Android and iOS, the total payload must be at most 4096 bytes.
type PushClient ¶
type PushClient struct {
// contains filtered or unexported fields
}
PushClient is an object used for making push notification requests
func NewPushClient ¶
func NewPushClient(config *ClientConfig) *PushClient
NewPushClient creates a new Exponent push client See full API docs at https://docs.getexponent.com/versions/v13.0.0/guides/push-notifications.html#http-2-api
func (*PushClient) Publish ¶
func (c *PushClient) Publish(message *PushMessage) (PushResponse, error)
Publish sends a single push notification @param push_message: A PushMessage object @return an array of PushResponse objects which contains the results. @return error if any requests failed
func (*PushClient) PublishMultiple ¶
func (c *PushClient) PublishMultiple(messages []PushMessage) ([]PushResponse, error)
PublishMultiple sends multiple push notifications at once @param push_messages: An array of PushMessage objects. @return an array of PushResponse objects which contains the results. @return error if the request failed
type PushMessage ¶
type PushMessage struct { To []ExponentPushToken `json:"to"` Body string `json:"body"` Data map[string]string `json:"data,omitempty"` Sound string `json:"sound,omitempty"` Title string `json:"title,omitempty"` TTLSeconds int `json:"ttl,omitempty"` Expiration int64 `json:"expiration,omitempty"` Priority string `json:"priority,omitempty"` Badge int `json:"badge,omitempty"` ChannelID string `json:"channelId,omitempty"` }
PushMessage is an object that describes a push notification request. Fields:
To: an ExponentPushToken Data: A dict of extra data to pass inside of the push notification. The total notification payload must be at most 4096 bytes. Title: The title to display in the notification. On iOS, this is displayed only on Apple Watch. Body: The message to display in the notification. Sound: A sound to play when the recipient receives this notification. Specify "default" to play the device's default notification sound, or omit this field to play no sound. TTLSeconds: The number of seconds for which the message may be kept around for redelivery if it hasn't been delivered yet. Defaults to 0. Expiration: UNIX timestamp for when this message expires. It has the same effect as ttl, and is just an absolute timestamp instead of a relative one. Priority: Delivery priority of the message. Use the *Priority constants specified above. Badge: An integer representing the unread notification count. This currently only affects iOS. Specify 0 to clear the badge count. ChannelID: ID of the Notification Channel through which to display this notification on Android devices.
type PushResponse ¶
type PushResponse struct { PushMessage PushMessage ID string `json:"id"` Status string `json:"status"` Message string `json:"message"` Details map[string]string `json:"details"` }
PushResponse is a wrapper class for a push notification response. A successful single push notification:
{'status': 'ok'}
An invalid push token
{'status': 'error', 'message': '"adsf" is not a registered push notification recipient'}
func (*PushResponse) ValidateResponse ¶
func (r *PushResponse) ValidateResponse() error
ValidateResponse returns an error if the response indicates that one occurred. Clients should handle these errors, since these require custom handling to properly resolve.
type PushResponseError ¶
type PushResponseError struct {
Response *PushResponse
}
PushResponseError is a base class for all push reponse errors
func (*PushResponseError) Error ¶
func (e *PushResponseError) Error() string
type PushServerError ¶
type PushServerError struct { Message string Response *fastshot.Response ResponseData *Response Errors []map[string]string }
PushServerError is raised when the push token server is not behaving as expected For example, invalid push notification arguments result in a different style of error. Instead of a "data" array containing errors per notification, an "error" array is returned. {"errors": [
{"code": "API_ERROR", "message": "child \"to\" fails because [\"to\" must be a string]. \"value\" must be an array." }
]}
func NewPushServerError ¶
func NewPushServerError(message string, response *fastshot.Response, responseData *Response, errors []map[string]string) *PushServerError
NewPushServerError creates a new PushServerError object
func (*PushServerError) Error ¶
func (e *PushServerError) Error() string
type Response ¶
type Response struct { Data []PushResponse `json:"data"` Errors []map[string]string `json:"errors"` }
Response is the HTTP response returned from an Expo publish HTTP request