- Notifications
You must be signed in to change notification settings - Fork7
Go package for HTTP/2 Apple Push Notification Service.
License
NotificationsYou must be signed in to change notification settings
sger/go-apns2
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Go package for HTTP/2Apple Push Notification Service.
Viago-get:
$ go get github.com/sger/go-apns2$cd go-apns2/_examples$cd basic$ go build$ ./basic
$ godoc.$ godoc -http=:6060package mainimport ("fmt""log""github.com/sger/go-apns2""github.com/sger/go-apns2/certificate")funcmain() {vardeviceToken="c7800a79efffe8ffc01b280717a936937cb69f8ca307545eb6983c60f12e167a"varfilename="../certs/PushChatKey.p12"varpassword="pushchat"// Setup payload must contains an aps root label and alert messagepayload:= apns2.Payload{Alert: apns2.Alert{Body:"Testing HTTP 2"},Badge:5,}// Parse the certificatecert,err:=certificate.ReadP12File(filename,password)iferr!=nil {log.Fatal(err)}// Setup a new http client with pass the Certificate// and host environment (apns2.Development, apns2.Production)client,err:=apns2.NewClient(cert,apns2.Development)iferr!=nil {log.Fatal(err)}// Send the Push Notificationresp,err:=client.SendPush(payload,deviceToken,&apns2.Headers{})iferr!=nil {log.Fatal(err)}// Returns ApnsResponse struct/*type ApnsResponse struct {StatusCode intStatusCodeDescription stringApnsID string `json:"apns-id,omitempty"`Reason string `json:"reason,omitempty"`}*/fmt.Println(resp)}
package mainimport ("fmt""log""time""github.com/sger/go-apns2""github.com/sger/go-apns2/certificate")varstatusboolvarpayloads []apns2.PayloadvarpayloadsProcessedintvartotalPayloadsintvarapns []*apns2.ApnsResponsefuncmain() {status=truestatusChannel:=make(chanint)payloadChannel:=make(chan*apns2.ApnsResponse)totalPayloads=0// Creating 1000 payloadsfori:=0;i<1000;i++ {message:=fmt.Sprintf("Hello World %v!",i)payload:= apns2.Payload{Alert: apns2.Alert{Body:message},}payloads=append(payloads,payload)}payloadsProcessed=0totalPayloads=len(payloads)// goroutinesgosendPayloads(statusChannel,payloadChannel)goprocessPayloadResponses(payloadChannel)for {ifstatus==false {for_,id:=rangeapns {fmt.Println(id)}fmt.Println("Done sending ",totalPayloads," payloads")break}select {casesC:=<-statusChannel:fmt.Println("Payload received on StatusChannel",sC)payloadsProcessed++ifpayloadsProcessed==totalPayloads {fmt.Println("Received all Payloads")status=falseclose(statusChannel)close(payloadChannel)}}}}funcsendPayloads(statusChannelchanint,payloadChannelchan*apns2.ApnsResponse) {time.Sleep(time.Millisecond*1)fmt.Println("Sending",len(payloads),"payloads")vardeviceToken="c7800a79efffe8ffc01b280717a936937cb69f8ca307545eb6983c60f12e167a"varfilename="../certs/PushChatKey.p12"varpassword="pushchat"cert,err:=certificate.ReadP12File(filename,password)iferr!=nil {log.Fatal(err)}// Setup a new http clientclient,err:=apns2.NewClient(cert,apns2.Development)iferr!=nil {log.Fatal(err)}fori:=0;i<totalPayloads;i++ {fmt.Println("sending payload ",i,payloads[i])resp,err:=client.SendPush(payloads[i],deviceToken,&apns2.Headers{})iferr!=nil {log.Fatal(err)}payloadChannel<-respstatusChannel<-0}}funcprocessPayloadResponses(payloadChannelchan*apns2.ApnsResponse) {for {select {casepC:=<-payloadChannel:apns=append(apns,pC)}}}
- Pem Support
- Tests
- Error Handling
- Support for Feedback service
Spiros Gerokostas
Go Apns2 is available under the MIT license. See the LICENSE file for more info.
About
Go package for HTTP/2 Apple Push Notification Service.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published