Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Go package for HTTP/2 Apple Push Notification Service.

License

NotificationsYou must be signed in to change notification settings

sger/go-apns2

Repository files navigation

Build StatusGoDocCoverage Status

Go Apns2

Go package for HTTP/2Apple Push Notification Service.

Installation

Viago-get:

$ go get github.com/sger/go-apns2$cd go-apns2/_examples$cd basic$ go build$ ./basic

Documentation

$ godoc.$ godoc -http=:6060

Usage

Simple example

package 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)}

Goroutines and channels example

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)}}}

TODO

  • Pem Support
  • Tests
  • Error Handling
  • Support for Feedback service

Author

Spiros Gerokostas

License

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

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp