package apns2

import "time"

const (
	PriorityLow  = 5
	PriorityHigh = 10
)

type Notification struct {
	ApnsID      string
	DeviceToken string
	Topic       string
	Expiration  time.Time
	Priority    int
	Payload     []byte
}

package apns2

import "time"

const (
	// PriorityLow will tell APNs to send the push message at a time that takes
	// into account power considerations for the device. Notifications with this
	// priority might be grouped and delivered in bursts. They are throttled, and
	// in some cases are not delivered.
	PriorityLow = 5

	// PriorityHigh will tell APNs to send the push message immediately.
	// Notifications with this priority must trigger an alert, sound, or badge on
	// the target device. It is an error to use this priority for a push
	// notification that contains only the content-available key.
	PriorityHigh = 10
)

// Notification represents the the data and metadata for a APNs Remote Notification.
type Notification struct {

	// An optional canonical UUID that identifies the notification. The canonical
	// form is 32 lowercase hexadecimal digits, displayed in five groups separated
	// by hyphens in the form 8-4-4-4-12. An example UUID is as follows:
	//
	// 	123e4567-e89b-12d3-a456-42665544000
	//
	// If you don't set this, a new UUID is created by APNs and returned in the
	// response.
	ApnsID string

	// A string containing hexadecimal bytes of the APNs token for the device for
	// which this notification should be sent
	DeviceToken string

	// The topic of the remote notification, which is typically the bundle ID for
	// your app. The certificate you create in the Apple Developer Member Center
	// must include the capability for this topic. If your certificate includes
	// multiple topics, you must specify a value for this header. If you omit this
	// header and your APNs certificate does not specify multiple topics, the APNs
	// server uses the certificate’s Subject as the default topic.
	Topic string

	// An optional time at which the notification is no longer valid and can be
	// discarded by APNs. If this value is in the past, APNs treats the
	// notification as if it expires immediately and does not store the
	// notification or attempt to redeliver it. If this value is left as the
	// default (ie, Expiration.IsZero()) an expiration header will not added to the
	// http request.
	Expiration time.Time

	// The priority of the notification. Specify ether apns.PriorityHigh (10) or
	// apns.PriorityLow (5) If you don't set this, the APNs server will set the
	// priority to 10.
	Priority int

	// A byte array conatining the JSON-encoded payload of this push notification.
	// Refer to "The Remote Notification Payload" section in the Apple Local and
	// Remote Notification Programming Guide for more info.
	Payload []byte
}

Add documentation for a Notification
Add documentation for a Notification
