summaryrefslogtreecommitdiffstats
path: root/Godeps/_workspace/src/github.com/anachronistic
diff options
context:
space:
mode:
Diffstat (limited to 'Godeps/_workspace/src/github.com/anachronistic')
-rw-r--r--Godeps/_workspace/src/github.com/anachronistic/apns/README.md223
1 files changed, 223 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/github.com/anachronistic/apns/README.md b/Godeps/_workspace/src/github.com/anachronistic/apns/README.md
new file mode 100644
index 000000000..02b012fd3
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/anachronistic/apns/README.md
@@ -0,0 +1,223 @@
+# apns
+
+Utilities for Apple Push Notification and Feedback Services.
+
+[![GoDoc](https://godoc.org/github.com/anachronistic/apns?status.png)](https://godoc.org/github.com/anachronistic/apns)
+
+## Installation
+
+`go get github.com/anachronistic/apns`
+
+## Documentation
+
+- [APNS package documentation](http://godoc.org/github.com/anachronistic/apns)
+- [Information on the APN JSON payloads](http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html)
+- [Information on the APN binary protocols](http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html)
+- [Information on APN troubleshooting](http://developer.apple.com/library/ios/#technotes/tn2265/_index.html)
+
+## Usage
+
+### Creating pns and payloads manually
+```go
+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
+```json
+{
+ "aps": {
+ "alert": "Hello, world!",
+ "badge": 42,
+ "sound": "bingbong.aiff"
+ }
+}
+```
+
+### Using an alert dictionary for complex payloads
+```go
+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
+```json
+{
+ "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
+```go
+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
+```json
+{
+ "aps": {
+ "alert": "Hello, world!",
+ "badge": 42,
+ "sound": "bingbong.aiff"
+ },
+ "doctor": "who?",
+ "foo": "bar",
+ "the_ultimate_answer": 42
+}
+```
+
+### Sending a notification
+```go
+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
+```shell
+ Alert: {"aps":{"alert":"Hello, world!","badge":42,"sound":"bingbong.aiff"}}
+Success: true
+ Error: <nil>
+```
+
+### Checking the feedback service
+```go
+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 := <-apns.FeedbackChannel:
+ fmt.Println("- recv'd:", resp.DeviceToken)
+ case <-apns.ShutdownChannel:
+ fmt.Println("- nothing returned from the feedback service")
+ os.Exit(1)
+ }
+ }
+}
+```
+
+#### Returns
+```shell
+- 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.
+
+```shell
+- recv'd: DEVICE_TOKEN_HERE
+...etc.
+```