A Golang package for sending Apple Push Notifications and using the Feedback Service.
Utilities for Apple Push Notification and Feedback Services.
go get github.com/anachronistic/apns
package mainimport ( "fmt" apns "github.com/anachronistic/apns" )
func main() { payload := apns.NewPayload() payload.Alert = "Hello, world!" payload.Badge = 42 payload.Sound = "bingbong.aiff"
pn := apns.NewPushNotification() pn.AddPayload(payload)
alert, _ := pn.PayloadString() fmt.Println(alert) }
{ "aps": { "alert": "Hello, world!", "badge": 42, "sound": "bingbong.aiff" } }
package mainimport ( "fmt" apns "github.com/anachronistic/apns" )
func main() { args := make([]string, 1) args[0] = "localized args"
dict := apns.NewAlertDictionary() dict.Body = "Alice wants Bob to join in the fun!" dict.ActionLocKey = "Play a Game!" dict.LocKey = "localized key" dict.LocArgs = args dict.LaunchImage = "image.jpg"
payload := apns.NewPayload() payload.Alert = dict payload.Badge = 42 payload.Sound = "bingbong.aiff"
pn := apns.NewPushNotification() pn.AddPayload(payload)
alert, _ := pn.PayloadString() fmt.Println(alert) }
{ "aps": { "alert": { "body": "Alice wants Bob to join in the fun!", "action-loc-key": "Play a Game!", "loc-key": "localized key", "loc-args": [ "localized args" ], "launch-image": "image.jpg" }, "badge": 42, "sound": "bingbong.aiff" } }
package mainimport ( "fmt" apns "github.com/anachronistic/apns" )
func main() { payload := apns.NewPayload() payload.Alert = "Hello, world!" payload.Badge = 42 payload.Sound = "bingbong.aiff"
pn := apns.NewPushNotification() pn.AddPayload(payload)
pn.Set("foo", "bar") pn.Set("doctor", "who?") pn.Set("the_ultimate_answer", 42)
alert, _ := pn.PayloadString() fmt.Println(alert) }
{ "aps": { "alert": "Hello, world!", "badge": 42, "sound": "bingbong.aiff" }, "doctor": "who?", "foo": "bar", "the_ultimate_answer": 42 }
package mainimport ( "fmt" apns "github.com/anachronistic/apns" )
func main() { payload := apns.NewPayload() payload.Alert = "Hello, world!" payload.Badge = 42 payload.Sound = "bingbong.aiff"
pn := apns.NewPushNotification() pn.DeviceToken = "YOUR_DEVICE_TOKEN_HERE" pn.AddPayload(payload)
client := apns.NewClient("gateway.sandbox.push.apple.com:2195", "YOUR_CERT_PEM", "YOUR_KEY_NOENC_PEM") resp := client.Send(pn)
alert, _ := pn.PayloadString() fmt.Println(" Alert:", alert) fmt.Println("Success:", resp.Success) fmt.Println(" Error:", resp.Error) }
Alert: {"aps":{"alert":"Hello, world!","badge":42,"sound":"bingbong.aiff"}} Success: true Error:
package mainimport ( "fmt" apns "github.com/anachronistic/apns" "os" )
func main() { fmt.Println("- connecting to check for deactivated tokens (maximum read timeout =", apns.FeedbackTimeoutSeconds, "seconds)")
client := apns.NewClient("feedback.sandbox.push.apple.com:2196", "YOUR_CERT_PEM", "YOUR_KEY_NOENC_PEM") go client.ListenForFeedback()
for { select { case resp :=
Returns
- connecting to check for deactivated tokens (maximum read timeout = 5 seconds) - nothing returned from the feedback service exit status 1Your output will differ if the service returns device tokens.
- recv'd: DEVICE_TOKEN_HERE ...etc.