Documentation
¶
Overview ¶
Package payload prepares a JSON payload to push.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var (
ErrIncomplete = errors.New("payload does not contain necessary fields")
)
Validation errors.
Functions ¶
This section is empty.
Types ¶
type APS ¶
type APS struct {
// Alert dictionary.
Alert Alert
// Badge to display on the app icon.
// Set to badge.Preserve (default), badge.Clear
// or a specific value with badge.New(n).
Badge badge.Badge
// The name of a sound file to play as an alert.
Sound string
// Content available is for silent notifications
// with no alert, sound, or badge.
ContentAvailable bool
// Category identifier for custom actions in iOS 8 or newer.
Category string
// Mutable is used for Service Extensions introduced in iOS 10.
MutableContent bool
// Thread identifier to create notification groups in iOS 12 or newer.
ThreadID string
}
APS is Apple's reserved namespace. Use it for payloads destined to mobile devices (iOS).
Example ¶
package main
import (
"encoding/json"
"fmt"
"github.com/nohana/buford/payload"
"github.com/nohana/buford/payload/badge"
)
func main() {
p := payload.APS{
Alert: payload.Alert{Body: "Hello HTTP/2"},
Badge: badge.New(42),
Sound: "bingbong.aiff",
}
b, err := json.Marshal(p)
if err != nil {
// handle error
}
fmt.Printf("%s", b)
}
Output: {"aps":{"alert":"Hello HTTP/2","badge":42,"sound":"bingbong.aiff"}}
func (*APS) Map ¶
Map returns the payload as a map that you can customize before serializing it to JSON.
Example ¶
Use Map to add custom values to the payload.
package main
import (
"encoding/json"
"fmt"
"github.com/nohana/buford/payload"
)
func main() {
p := payload.APS{
Alert: payload.Alert{Body: "Topic secret message"},
}
pm := p.Map()
pm["acme2"] = []string{"bang", "whiz"}
b, err := json.Marshal(pm)
if err != nil {
// handle error
}
fmt.Printf("%s", b)
}
Output: {"acme2":["bang","whiz"],"aps":{"alert":"Topic secret message"}}
func (APS) MarshalJSON ¶
MarshalJSON allows you to json.Marshal(aps) directly.
func (*APS) Validate ¶ added in v0.3.0
Validate that a payload has the correct fields.
Example ¶
package main
import (
"fmt"
"github.com/nohana/buford/payload"
"github.com/nohana/buford/payload/badge"
)
func main() {
p := payload.APS{
Badge: badge.Preserve,
Sound: "bingbong.aiff",
}
if err := p.Validate(); err != nil {
fmt.Println(err)
}
}
Output: payload does not contain necessary fields
type Alert ¶
type Alert struct {
// Title is a short string shown briefly on Apple Watch in iOS 8.2 or newer.
Title string `json:"title,omitempty"`
TitleLocKey string `json:"title-loc-key,omitempty"`
TitleLocArgs []string `json:"title-loc-args,omitempty"`
// Subtitle added in iOS 10
Subtitle string `json:"subtitle,omitempty"`
// Body text of the alert message.
Body string `json:"body,omitempty"`
LocKey string `json:"loc-key,omitempty"`
LocArgs []string `json:"loc-args,omitempty"`
// Key for localized string for "View" button.
ActionLocKey string `json:"action-loc-key,omitempty"`
// Image file to be used when user taps or slides the action button.
LaunchImage string `json:"launch-image,omitempty"`
}
Alert dictionary.
type Browser ¶ added in v0.2.0
type Browser struct {
Alert BrowserAlert
URLArgs []string
}
Browser for Safari Push Notifications.
Example ¶
package main
import (
"encoding/json"
"fmt"
"github.com/nohana/buford/payload"
)
func main() {
p := payload.Browser{
Alert: payload.BrowserAlert{
Title: "Flight A998 Now Boarding",
Body: "Boarding has begun for Flight A998.",
Action: "View",
},
URLArgs: []string{"boarding", "A998"},
}
b, err := json.Marshal(p)
if err != nil {
// handle error
}
fmt.Printf("%s", b)
}
Output: {"aps":{"alert":{"title":"Flight A998 Now Boarding","body":"Boarding has begun for Flight A998.","action":"View"},"url-args":["boarding","A998"]}}
func (Browser) MarshalJSON ¶ added in v0.2.0
MarshalJSON allows you to json.Marshal(browser) directly.
type BrowserAlert ¶ added in v0.2.0
type BrowserAlert struct {
// Title and Body are required
Title string `json:"title"`
Body string `json:"body"`
// Action button label (defaults to "Show")
Action string `json:"action,omitempty"`
}
BrowserAlert for Safari Push Notifications.
Click to show internal directories.
Click to hide internal directories.