
Push notifications from Go with Apple's new HTTP/2 protocol - geordidearns
https://github.com/sideshow/apns2
======
NightMKoder
There are few protocols that were truly worse than Apple's non-HTTP APNS
protocol. You can read more at
[https://developer.apple.com/library/ios/documentation/Networ...](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Appendixes/BinaryProviderAPI.html#//apple_ref/doc/uid/TP40008194-CH106-SW5)
, but suffice to say, the best part lies in:

 _If you send a notification that is accepted by APNs, nothing is returned.

If you send a notification that is malformed or otherwise unintelligible, APNs
returns an error-response packet and closes the connection._

"Unintelligible" here includes of course invalid tokens, e.g. when the user
uninstalls your app.

One of the upgrades was actually returning the last notification that made it
through before closing the connection. Before that all you could do was add a
sleep() and pray.

------
sudhirj
I can see that this is a library to send Push Notifications via Apple's
servers, but what does it have to do with HTTP/2? Did Apple make a new version
of the notifications API that uses HTTP/2? Why wouldn't they just silently
upgrade the transfer protocol on the existing service?

~~~
zwily
The previous APNS service doesn't use HTTP at all.

~~~
wimagguc
There is a great comparison between Apple's old and new protocols:
[https://dblog.laulkar.com/http2-protocol-for-
apns.html](https://dblog.laulkar.com/http2-protocol-for-apns.html)

------
eddieroger
Wow, that title. What this actually links to is a Go wrapper for Apple's new
APNS interface, which utilizes HTTP/2\. While this looks like a useful tool
for the toolbelt, I would have much rather read something about how Apple got
to the new protocol, or an interesting blog post about experiences using it.
Having come from a shop that worked on the older protocols and been the
tiniest part of an implementation with one of the brightest developers I've
ever met, this new protocol is brilliant and a huge improvement, and it's a
shame that this post, despite the title, doesn't do that justice.

------
gary4gar
How is this different from
[https://github.com/RobotsAndPencils/buford](https://github.com/RobotsAndPencils/buford)?

~~~
edgurgel
APNS2 has a simpler interface and doesn't do things like generate website
packages etc. APNS2 has better test coverage, and handles errors in a more go-
like way. (Returns a response if a documented response was received from
Apple, or an error where an unexpected error occurs.)

We are running this in production at [http://carnival.io](http://carnival.io)
to send millions of notifications, to my knowledge buford has not been tested
in production yet.

~~~
tex0
From a first look APNS2 seems to add very little value over bufort which we
are running in production very successfully. I really wonder how you manage to
send millions of notifications (over which period of time?) without much
boilerplate code.

------
Hbthegreat
Can't wait for people to start saying APNS like they say "sequel" for SQL. It
is going to make for some hilarious standups.

~~~
pvdebbe
'appens or a-pens?

~~~
Hbthegreat
'a penis'

~~~
asadlionpk
defines the protocol really well I think.

------
deejbee
I only read the title and just thought... so Apple 'invented' their own HTTP/2
protocol now. that really wouldn't surprise me. one. little. bit.

~~~
dao-
It would have surprised me but it also isn't something I would absolutely rule
out a priori :)

Also, it's a pretty bad headline from what I (non-native speaker) can tell.
You have a point, not quite sure why you're being downvoted.

~~~
pgeorgi
I guess the unpopular bit is the insinuation that the following happens with
Apple repeatedly: Somebody develops an industry standard, Apple implements it,
people start claiming that Apple invented it.

That situation is a popular tech trope.

~~~
Ensorceled
And, also, many people on HN like to nip these kinds of pointless, snarky
comments about Apple, Google, IBM, what have you in the bud.

"Take this to reddit" being the oft heard refrain.

