Push notification for gmail in iOS app - ios

For an iOS app which connects to a user's mailbox, i'm looking for a reliable way to send the user a push notification when new mail is available. (Without polling, of course).
If needed, I'm ok with setting up a server that will receive a push from gmail and re-send it as an iOS push.
It is not ok however if the user has to configure anything special in their account for the push to work.
Any advice or reference to a library (or external service) would be greatly appreciated.
Thanks!

Unfortunately there currently is no mechanism to receive updates automatically when new mail arrives. I would recommend logging an enhancement request for push notification support in the Gmail API in the Apps API issue tracker. In lieu of this, you can minimize resource utilization by only doing a full sync once, and then keeping track of the history id and doing only partial syncs from that point.

Google have added official support for push notifications on mailbox changes via the watch() call.
Usage is documented here: https://developers.google.com/gmail/api/guides/push#getting_gmail_mailbox_updates

Related

APN push notifications for chat

I'm trying to add notifications to a private chat app that uses Firebase, unfortunately Firebase has an APN service but it must be configured and needs also a server app to manage it. I'd like to have the user notified when someone is texting him while the app is in the background. The problem is that APN (Apple Push Notifications) requires a server with a certificate and that is ok with me, but I'm looking for a way to send push notifications from an iOS device to another device, I mean device-to-device push notifications and the server has just to relay the messages as they are. In my case the APN server should only relay the messages that it receives from a source device to the destination device. I couldn't find a way to obtain that without writing sever code. I want to use pre-built existing services. Has anybody any idea on how to send push notifications from one device to another without configuring and writing server apps? I tried a workaround using the background fetch iOS feature, but the system si randomly giving my app execution time... and that means that my app could wait hours before being started by the system... so that is not a viable solution. Please help
Ok, probably what I found out could be helpful for others. Actually
what I'm looking for can be directly integrated in the app. You need a library like NWPusher (free on GitHub) which can be imported, and with just a few lines of code and the APN device token you get from the system, it is possibile to implement APN notifications... easily, but most importantly... for free.
UPDATE
Check also APNS framework on GitHub. It's written in Swift 3.0 and it supports the latest features.
You are essentially looking for a messaging / chat API to handle device-to-device communication. You might want to try Pusher or PubNub

Push notification service like parse?

In Parse I know you can send push notification from one device to another, but since it is shutting down soon I have looked at a lot of push notification services. But I could not find one service which allows you to push to other users. i.e. Firebase, you send out notifications from the computer. Basically I need a service when a function is called in the code it goes to certain people automatically. Any service suggestions?
If you have an own server, connect it with FCM. Then create an API using PHP to receive message and forward it to another device. You may implement a system to store the FCM token of the devices in the server.
You have 2 options:
Create you own app server that will send a push notification to either APNS/GCM according to the user device type and device token id
Use push provider. I recommend you to use OneSignal because its 100% free, support in all devices and have an SDK to any client/server side technology so if you will use OneSignal you will not need any server in-between your app and the push server.
this is the onesignal home page: https://onesignal.com/
and this is the SDK docs page: https://documentation.onesignal.com/
BTW! if you want to can also continue to use parse services because they release their service as an open source which called parse-server
so you can take and deploy parse-server to any cloud platform that run NodeJS and then you can continue to work as usual

Fetching data from server & adding notifications

I am working on an app which fetches student info from a server, like absences and events and grades. I have no access to the server, I only have the API.
I am asked to implement push notifications in the app, such that if a teacher marks a student absent, that student get a notification about that. I searched and found several approaches:
1- Background fetch: I tried using background fetch to check if the student logged in to the app was marked absent today, if yes, show a local notification. It worked when I simulated w background fetch, but never worked on the physical device.
2- I searched for using Apple Push Notification Service, and they all wanted me to build a server, and I dont know how to start. Can I build a server which pushes notifications to devices in a way facebook does it? That is, one user triggers a notification at another user, in other words: I dont want to use broadcast notifications.
3- Using third party, like backendless, firebase or any alternatives. Would that be a useful approach?
With Backendless your app (on the student side) can register itself to receive push notifications. This is done with an API call that registers the device on the servers provided by Backendless. Then you would build an additional application (could be a browser web app or a mobile app) for the teachers. The system allows to send targeted notifications, so when a student is marked as absent, you could use the API to deliver a push notification specifically to the student's device. Would be happy to discuss in detail, you can post your question to the Backendless support forum.
For my app I have designed Push service using Java APNS library.
Or You could use Microsoft Azure Mobile services to push a notifications to devices.

Apple push notification Vs. Parse

i have an app and i'm thinking about implementing push notifications in it. however, i want to use remote notifications. i've tried Parse's push notification service and it's great and works well. You can type any text you want to inform your users about and just press send in order to be delivered to all your App users. On the other hand, i don't know if Apple has any such service that can facilitate the process of sending remote notifications. so which is better to stick to, Apple or Parse? and can i have the same service as Parse from Apple?
Yes, you can get the same services as Parse. You have to build your own server that will talk with Apple APNS. Just for example sending a push notification from your own server without using parse is here.
I didn't understand what are you trying to ask.
You can use Apple push notification service for sending remote content. With Any content related to your App.
Check RemoteNotifications for details. Parse is also using the Apple's push notification service.
Edit: For implementing your own servers for push notification check this tutorial : Push Notification Services

If I use Apple Push Notification service for instant messaging will apple block my account?

I want to create an iOS chatting app using APNS. If I have 10,000 active and they are continuing chatting, will apple block my developer account ? Is there any limitation regarding this?
I would discourage you from using APNS as a backbone of an "chatting app".
If you need fast chatting functionality you should write your own TCP-socket based server.
If every-few-second syncing is o.k. you can get away with a HTTP-based server backend (but all the pull-syncing can be hard on network traffic - so TCP-socket is still better choice).
You could however use APNS for fallback - when your app on certain device is not responding (i.e. is not connected to server) you can send an initial message trough APNS (to wake up your app & to notify the user there is a message waiting for him).
As soon as the user opens your app you should switch back to your TCP-socket or HTTP request based server communication.
As for your question: no, Apple would most probably (one can never know for sure) not reject your app just because of using APNS for chatting. But note (as the others said allready): messages between two users will get "lost" if they would interact too frequently - see the link Roman Barzyczak gave you.
"If you are sending multiple notifications to the same device or computer within a short period of time, the push service will send only the last one."
more information: http://developer.apple.com/library/ios/#technotes/tn2265/_index.html
but Apple wont block your developer account :)
You can use them for messaging but you are going to quickly find out that there is no guarantee they will arrive. This is known as the black hole of push notifications. ;-)
I like this answer here.
First try to use an APNS only solution.
Make your push notifications stateless (they only serve as "Hey you have some new stuff in the server").
So when the client gets a push notification it asks the server for new data (messages or other stuff).
Use OneSignal to simplify the code that sends push notifications (from the back-end). If a user in your app gets a message after 10 seconds he dose not care if you used TCP,socket.io or xmpp...
Even Whatsapp's messages can take couple of seconds to arrive.
A chat app is not a realtime game. A delay of couple of seconds will be acceptable by end users.

Resources