[aerogear-dev] safari push
Lucas Holmquist
lholmqui at redhat.com
Tue Nov 26 09:49:48 EST 2013
On Nov 26, 2013, at 9:38 AM, Sebastien Blanc <scm.blanc at gmail.com> wrote:
> This is really cool and thanks for these tons of info !
> Regarding the overlap between the ios and safari variant, could you open a ticket so that we keep track of it.
https://issues.jboss.org/browse/AGPUSH-491
and
https://issues.jboss.org/browse/AGPUSH-490
as a start
> Seb
>
>
>
> On Thu, Nov 21, 2013 at 6:03 PM, Lucas Holmquist <lholmqui at redhat.com> wrote:
> so i started to play with Safari Push notifications, here is my experience:
>
> Setup
>
> like iOS, you need to login to the dev portal and create an application ID, in this case a website ID, then do all the same things with certifcates and such.
>
> the next part is you need to create a "push package" that either resides on the server your "website/webapp" is on as a .zip, or created dynamically at runtime. more on this later
>
> The push package contains some things that are ultimately signed with your create certificate.
>
> here is a link for more detail on the push package pp link
>
> The client and server
>
> Safari 7 on Mavericks ships with some new API's for doing push.
>
> the first:
>
> window.safari.pushNotification.requestPermission(url, websitePushID, userInfo, callback);
>
> *url - a https url to a webservice *websitePushID - website push ID created in the dev console *userInfo - just some metadata if you want *callback - yup, it's asynchronous
>
> so when this call is made, safari will make a POST to an endpoint like this:
>
> webServiceURL/version/pushPackages/websitePushID
> this is where you would serve your push package with the application/zip content type header thing
>
> if all goes well with the push package, safari will ask the user to allow notifications, if the user allows them, then a POST to this endpoint happens
>
> webServiceURL/version/devices/deviceToken/registrations/websitePushID
> and the "device token" is then returned in the callback from above
>
> a DELETE sent to that same endpoint if a user removes permissions.( haven't tried this yet )
>
> if any error happens during any of these calls, this endpoint is POST'ed to
>
> webServiceURL/version/log
> here is my repo that is running on openshift( the easist way to get https since safari doesn't like self signed certs )
>
> https://github.com/lholmquist/safaripush
>
> the hardest part of this whole things is the actual setup of the push package
>
> here is a repo i found that helped a bit, and apple also has a file that tries to help
>
> https://github.com/connorlacombe/Safari-Push-Notifications
>
> yes, i know, php.
>
> i'm in the process of writing a node version, and yes, i've seen this one https://npmjs.org/package/web-push-package
>
> UPS
>
> So the good news is that the developer has to do all that stuff before they interact with the UPS.
>
> Safari uses APNs( production only gateway ), but the payload is slightly different.
>
> {
> "aps": {
> "alert": {
> "title": "Flight A998 Now Boarding",
> "body": "Boarding has begun for Flight A998.",
> "action": "View"
> },
> "url-args": ["boarding", "A998"]
> }
> }
> title and body are required
>
> i sent a PR to get this updated in the java_apns thing https://github.com/notnoop/java-apns/pull/135
>
> so we'll see what happens there
>
> there is a lot of duplication in the UPS for the APN's stuff, i just wanted to get things to work first, but iOS and Safari share almost everything.
>
> So maybe we need a more general APNs variant/sender whatever. i'm javascript dude, so my java skills are a bit rusty
>
> i have a branch of the UPS where i am playing with this here https://github.com/lholmquist/aerogear-unified-push-server/tree/safaripush
>
> the update UI is here https://github.com/lholmquist/aerogear-unified-push-server-admin-ui/tree/safarpush
>
> the modified java_apns is here
>
> https://github.com/lholmquist/java-apns/tree/safari_push
>
> there might be things missing, i'm just trying to download my brain
>
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20131126/b2a52f3c/attachment.html
More information about the aerogear-dev
mailing list