-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Related projects #53
Comments
Great idea. The other library you might want to check out (the one I'm actually using now) is https://github.com/virushuo/Go-Apns |
Thanks for the mention!
I have a |
Figure I'll chime in as well. As for mine I was specifically going for speed and correctness on error cases. Most libraries try to resend notifications in error situations which muddies up the error handling in certain cases. I just avoided all of that and just supply the needed information for the user to do what they need to do. This was a better situation than the Java-apns library I had worked on before where there were serious questions about whether error cases were handled correctly. To determine correctness in go-libapns there's actually some pretty decent tests covering the various failure methods from socket level to apple return codes. Overall though I don't really know that anyone is using it heavily (haven't even been using it myself) but it should be fairly solid at this point. (There was a pretty egregious bug where in connection close all sent pns would say they couldn't be sent but that's been fixed). |
My turn. 😄 The library is still being used in production on a service, but I don't think it gets massive amounts of traffic, so I can't speak to it's performance characteristics. Interesting point about it storing the recent notifications in a slice vs. a list. I'll need to revisit that the next time I use the code in a project. I'd also want to improve the error handling. Currently, it only reports invalidToken errors back to the library user (https://github.com/arashpayan/apns/blob/40c200c63099bf022d02db2bc6ff7768953cf7f2/apns.go#L236) but I'd like to improve that so it returns all errors to the library user's callback. |
I created mine just because there wasn't a good one that I could actually use that worked on Google App Engine. I am no longer using it tho, i wouldn't recommend anyone using it :) |
Wow. Thanks everyone. 😃 |
Oh neat, a github mention. I can add that the hermes code is sending out ~20m notifications per day off of a Redis queue. Half for apns for probably a few hundred apps. The final error/retry handling was intentionally left out because it's tied to legacy infrastructure and would have made it a bigger mess |
Thank you for the mention. That was my first go project and probably is not the best APNS code out there. Came from the need of having that service when AWS did not provide APNS integration. |
There is also https://github.com/mentionapp/apns.go as mentioned in #50. |
Since Apple dropped a new HTTP/2 API #57, I've been working on a new library that requires Go 1.6. I've used some of the ideas I saw in other libraries while designing the API. Hope you like it, but if not, this is a good time to help tweak it. |
For a little inspiration, I'm taking a look at other Go projects for APNS, starting with the one @finkel mentioned in #47 and then the one @themartorana mentioned (#38). @willfaught mentioned anachronistic in #26 (comment).
apns by Pranav Raja @pranavraja https://github.com/pranavraja/apns
SendOne, MakeNotification, and ReadInvalid make for a nice lower-level API that other things can be built on. I'm not sure how I feel about the queue. If I was fanning-out the same/similar message to a number of devices or using it as a mechanism for batch & send, maybe it could work, but managing multiple queues at once (requeuing on errors while sending more messages) could become cumbersome for the client.
go-libapns by Karl Kirch @joekarl https://github.com/joekarl/go-libapns
apns by @anachronistic https://github.com/anachronistic/apns
apns by Arash Payan @arashpayan https://github.com/arashpayan/apns
apns by Ryan Slade @ryanslade https://github.com/ryanslade/apns
apns on App Engine by Siong @siong1987 https://github.com/siong1987/apns
hermes APNS/GCM by Paul Karadimas @pkar https://github.com/pkar/hermes
Go-APNs by Matthew Price @mattprice https://github.com/mattprice/Go-APNs
apns-go by @Kwik-messenger https://github.com/Kwik-messenger/apns-go
go_apns by @MessageDream https://github.com/MessageDream/go_apns
Go-Apns by @virushuo Ju Huo https://github.com/virushuo/Go-Apns
APNs by Cornel Damian @corneldamian https://github.com/corneldamian/APNs
APNs by Matt DuVall @mduvall https://github.com/mduvall/go-apns
go-apns by Fabrizio Milo @Mistobaan https://github.com/Mistobaan/go-apns
Apns by @houxiaobei https://github.com/houxiaobei/Apns
The text was updated successfully, but these errors were encountered: