How does Apple Push Notifications work with HTTP/2 - ios

I have written a number of enterprise iOS apps for our company, all of which have been using the Apple Push Notification function.
I've also written the server-side code for sending the notifications without using a third-party API. It all works great.
Now, Apple is deprecating the old method for sending notifications and moving to an HTTP/2-based system.
I am trying to understand how the HTTP/2 protocol fits in with server-side code in issuing push notifications.
Isn't HTTP/2 just a standard for browsers to follow?
I've studied as much as I can of the Apple documentation for this, and it's no more clear to me now than it was before.
Please pardon my ignorance on this, but even getting the old system to work was an enormous accomplishment for me.
I wish I didn't have to change it.

Related

Push notifications on iOS - Which architecture?

I've successfully implemented push notifications on Android devices using: GCM, ti.goosh and HTTP cURL POSTs. What similar options are there for iOS?
Do you suggest Appcelerator Mobile Backend Services? https://onesignal.com ? Any other Ti module?
Thanks
We have had poor experience with Appcelerator's push service. I don't think that Appcelerator is focused enough on push notifications specifically. On numerous occasions, their platform would mysteriously underdeliver (maybe getting to only 30% of our audience), and getting diagnostics on these events was like pulling teeth (like a week of back-and-forth with their support team to get them to investigate the problem). They never really provided much guidance in terms of best practices for client-side integration of their SDK.
We recently moved to Pushwoosh, and have been much happier with their platform. They are extremely knowledgeable on all things push-related, and they have given us an impressive amount of support in our questions about arcane topics like push tokens, ios do-not-disturb mode, android background services, using multiple push providers, etc.

iOS communication with backend using APNs

How do I send push notifications to my iOS app? I need to send small messages even when the application is in the background or not running.Is there a simple tutorial. I searched a lot and only found third party solutions. Is there a direct way to access APNs, and if not which third party should I go for.
To send remote notifications, you need your own server that is authorized (you can grab a remote notification certificate from your developer account from developer.apple.com). Then you just follow Apple's API to send a notification to a specific device.
I followed a Ray Wenderlich guide a while back and found it useful.
However, you might not want to set up your own server and stuff. This is where third-party solutions come in. I've worked with Parse's push notification system and found that it is pretty easy to set up.

iOS Push Notification not sent from server (Jetpack)

I'm implementing an iOS application to manage my self-hosted website. My app make use of the many features already built for WordPress-iOS app, but it has differences and extra features.
One of the problem I'm currently having is that push notification was not sent from Jetpack (WordPress.com server) to Apple's APNs, because I'm not getting any notification on my device. I have already registered successfully my device token with Jetpack during app launch.
My problem could be the certificate key (.pem) file not getting uploaded to Wordpress.com (which I do not have access). Is this the reason why I'm not receiving any push notification to my iphone?
Additionally, I'm not getting any result on the NotificationsViewController. I do not have Simperium account setup yet. Could that be my problem for getting no results in NotificationsViewController?
Many thanks.
Sorry about the delay!. For the time being, i'm afraid that WordPress iOS doesn't support 3rd party apps integrations with its Notifications stack.
Meaning that if you'd like to handle Push Notifications support, you'd need to implement a WordPress.org plugin to handle the APN message delivery.
As per the Simperium side, there is no 3rd party app support -at least for now!- due to security restrictions.
If there's anything we could help you with, you may find us on the WordPress Slack (#mobile channel!).
Best,
Jorge

Push notifications not received in some devices in iOS

I am implementing the push notification in iOS for sending offers and deals. Right now I am working in the development environment. I see that some of the devices are not being notified. Could anybody explain possible causes? I have also read that if a push is sent to same device multiple times then APPLE disables them for that particular device? Could some one verify this or provide any documentation where I can find the issue. Any feedback would be appreciated.
Not directly answering your question, but what you asked about in the comments and an alternative. You could use a push-notification service such as Parse.
They allow you to send Push Notifications to Web, iOS and Android, also offer data storage and backend infrastructure. The best thing about Parse is that they're free. Unless you have one million unique recipients, which is rather hard to accomplish. Parsee allows you tons end Push Notifications in multiple ways, some including automatic messages based on their tables or other events. You can program those in their cloud code. You can do so using their REST API or their Java Script API if you have a website. You could also send from the Push window on their website.
Setting up is fairly easy. I'll give you the most important links below.
iOS Quick Start Guide
Rest API
PHP Guide
Hope that helps, Julian
If you are dependent on APNS then there is no guarantee provided regarding the delivery of the push notification. And regarding sending multiple notifications. Like if you send notification every min then many may not deliver. Else it will. This service is free and many including myself using it on a regular basis. It has been delivered regularly even though apple will not provide any guarantee. i'm using a php script on server side to send push notification. Refer the below link if you want to know how to send a push notification using php.
tutorial

Are there any benefits to using a push notification provider?

I am building an app that needs to use push notifications. Currently it is only an iPhone app and i have already implemented a manual version for push notifications.
There are quite a few services that do this kindof thing for you... Are there any benefits to using them? Having a nice API is not really relevant because of the fact that i have already implemented pushing manually.
The main reason i ask is that i downloaded the app Path and noticed that their push notifications seem to be a lot faster and a lot more reliable than my app...
Btw, Im using GAE for the backend.
Thanks
The most obvious benefit to using a push notification provider is not having to write the code yourself. Writing an efficient and reliable provider of Apple Push Notifications is not simple. If you want a quick solution and are willing to pay for it, using an existing provider is probably the way to go.
In my opinion the APNS API is bad. The fact that you don't get an acknowledgement for a successfull notification makes it hard to code a reliable provider. If you want to make sure you're not missing error responses from Apple, you have to attempt reading often from the connection, and with large timeouts, which will make your provider slow. On the other hand, if you want to send your notifications as quickly as possible, you'll have to sacrifice the reliability (because you won't be able to rely on getting all the error responses that Apple send). Of course, if you make sure that your DB doesn't contain invalid device tokens, and that you always send valid payloads, you can assume that you won't get error responses from Apple, which would allow you to send notifications quickly.
That said, I'm not sure how reliable and/or fast are the existing APN providers.
The best way to be sure of the quality of the provider you use is to write it yourself (unless you are willing to spend the time on testing the reliabily and speed of existing providers).

Resources