Need help with apns?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Coccodrillo
428 Stars 125 Forks MIT License 77 Commits 19 Opened issues

Description

A Golang package for sending Apple Push Notifications and using the Feedback Service.

Services available

!
?

Need anything else?

Contributors list

# 212,226
Go
44 commits
# 469,806
Go
C
2 commits
# 481,174
Go
2 commits
# 147,763
Objecti...
Shell
crash-r...
Go
1 commit
# 301,452
C
HTML
1 commit
# 129,296
React
navigat...
Swift
Objecti...
1 commit
# 560,049
Go
1 commit
# 128,634
Shell
C
HTML
shopify
1 commit
# 290,805
crypto
Kotlin
HTML
opensou...
1 commit

apns

Utilities for Apple Push Notification and Feedback Services.

GoDoc

Installation

go get github.com/anachronistic/apns

Documentation

Usage

Creating pns and payloads manually

package main

import ( "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) }

Returns

{
  "aps": {
    "alert": "Hello, world!",
    "badge": 42,
    "sound": "bingbong.aiff"
  }
}

Using an alert dictionary for complex payloads

package main

import ( "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) }

Returns

{
  "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"
  }
}

Setting custom properties

package main

import ( "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) }

Returns

{
  "aps": {
    "alert": "Hello, world!",
    "badge": 42,
    "sound": "bingbong.aiff"
  },
  "doctor": "who?",
  "foo": "bar",
  "the_ultimate_answer": 42
}

Sending a notification

package main

import ( "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) }

Returns

  Alert: {"aps":{"alert":"Hello, world!","badge":42,"sound":"bingbong.aiff"}}
Success: true
  Error: 

Checking the feedback service

package main

import ( "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 1

Your output will differ if the service returns device tokens.

- recv'd: DEVICE_TOKEN_HERE
...etc.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.