func (p *Payload) MarshalJSON() ([]byte, error) {
	return json.Marshal(p.content)
}
MarshalJSON returns the JSON encoded version of the Payload
package payload
import "encoding/json"
type Payload struct {
	content map[string]interface{}
}
type aps struct {
	Alert            interface{} `json:"alert,omitempty"`
	Badge            interface{} `json:"badge,omitempty"`
	Category         string      `json:"category,omitempty"`
	ContentAvailable int         `json:"content-available,omitempty"`
	MutableContent   int         `json:"mutable-content,omitempty"`
	Sound            string      `json:"sound,omitempty"`
	ThreadID         string      `json:"thread-id,omitempty"`
	URLArgs          []string    `json:"url-args,omitempty"`
}
type alert struct {
	Action       string   `json:"action,omitempty"`
	ActionLocKey string   `json:"action-loc-key,omitempty"`
	Body         string   `json:"body,omitempty"`
	LaunchImage  string   `json:"launch-image,omitempty"`
	LocArgs      []string `json:"loc-args,omitempty"`
	LocKey       string   `json:"loc-key,omitempty"`
	Title        string   `json:"title,omitempty"`
	Subtitle     string   `json:"subtitle,omitempty"`
	TitleLocArgs []string `json:"title-loc-args,omitempty"`
	TitleLocKey  string   `json:"title-loc-key,omitempty"`
}
func NewPayload() *Payload {
	return &Payload{
		map[string]interface{}{
			"aps": &aps{},
		},
	}
}
func (p *Payload) Alert(alert interface{}) *Payload {
	p.aps().Alert = alert
	return p
}
func (p *Payload) Badge(b int) *Payload {
	p.aps().Badge = b
	return p
}
func (p *Payload) ZeroBadge() *Payload {
	p.aps().Badge = 0
	return p
}
func (p *Payload) UnsetBadge() *Payload {
	p.aps().Badge = nil
	return p
}
func (p *Payload) Sound(sound string) *Payload {
	p.aps().Sound = sound
	return p
}
func (p *Payload) ContentAvailable() *Payload {
	p.aps().ContentAvailable = 1
	return p
}
func (p *Payload) MutableContent() *Payload {
	p.aps().MutableContent = 1
	return p
}
func (p *Payload) Custom(key string, val interface{}) *Payload {
	p.content[key] = val
	return p
}
func (p *Payload) AlertTitle(title string) *Payload {
	p.aps().alert().Title = title
	return p
}
func (p *Payload) AlertTitleLocKey(key string) *Payload {
	p.aps().alert().TitleLocKey = key
	return p
}
func (p *Payload) AlertTitleLocArgs(args []string) *Payload {
	p.aps().alert().TitleLocArgs = args
	return p
}
func (p *Payload) AlertSubtitle(subtitle string) *Payload {
	p.aps().alert().Subtitle = subtitle
	return p
}
func (p *Payload) AlertBody(body string) *Payload {
	p.aps().alert().Body = body
	return p
}
func (p *Payload) AlertLaunchImage(image string) *Payload {
	p.aps().alert().LaunchImage = image
	return p
}
func (p *Payload) AlertLocArgs(args []string) *Payload {
	p.aps().alert().LocArgs = args
	return p
}
func (p *Payload) AlertLocKey(key string) *Payload {
	p.aps().alert().LocKey = key
	return p
}
func (p *Payload) AlertAction(action string) *Payload {
	p.aps().alert().Action = action
	return p
}
func (p *Payload) AlertActionLocKey(key string) *Payload {
	p.aps().alert().ActionLocKey = key
	return p
}
func (p *Payload) Category(category string) *Payload {
	p.aps().Category = category
	return p
}
func (p *Payload) Mdm(mdm string) *Payload {
	p.content["mdm"] = mdm
	return p
}
func (p *Payload) ThreadID(threadID string) *Payload {
	p.aps().ThreadID = threadID
	return p
}
func (p *Payload) URLArgs(urlArgs []string) *Payload {
	p.aps().URLArgs = urlArgs
	return p
}