Possible rejection of application using Apple Push notifications - ios

I'm reading App Store Review Guidelines, and I am curious about point related with push notifications rules.
This is the rule, that confuses me, and especially second part:
Apps that send Push Notifications without first obtaining user
consent, as well as apps that require Push Notifications to function,
will be rejected
First part is clear :
Apps that send Push Notifications without first obtaining user
consent...
That means,that alert for registering of push notifications needs to be shown, but what is a meaning of second part :
... as well as apps that require Push Notifications to function ...
Is that means,that if I have messaging app, that uses Push Notifications for wake up it will be rejected, because Push notifications are heart of app like this?

Related

How to remove new Notifications from banner?

Is there any way to handle remote notification payloads before they’re delivered and display in notification centre?
With push notifications of default type there is no way to filter out notifications if the app is not in foreground.
The possible solution to this is to use VoIP push notifications in conjunction with PushKit.
VoIP pushes are always waking up the application, however they are not presented to the user and don't modify app badge value, so it's up to the developer to show a local notification upon the received VoIP push and to deal with app badge.
There is a technique with additional silent push that for example Facebook is using, to delete notification on iOS device when the message has been read on desktop web site. It's described here: https://www.pushwoosh.com/docs/deletable-ios-push

Handling Push Notifications when the app is open

I'm building a mobile chat app. I've configured OneSignal to send push notifications to my iOS device.
I plan to send push notifications to the user when a new message is received and the application isn't in the foreground (similar to how Facebook Messenger works).
I'm new to push notifications. I can imagine two solutions, neither of them elegant:
Solution 1: Send a push notification every time a message is sent. Then, if the app is open, ignore/swallow the notification. (Seems like a waste of resources).
Solution 2: Keep track of the app's state in my own database and only send a push notification if the app isn't in the foreground. (Seems overly complex).
What am I missing? What is the correct way to handle this?

voip app ios8: is pushkit still best practice?

I am working on an app that needs reliable push messages (like any voip) under ios9.
Here it says, that with IOS8+ one should use apns (registerForRemoteNotifications):
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/setKeepAliveTimeout:handler:
In the Optimize VOIP Apps document, Pushkit is preferred:
https://developer.apple.com/library/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html#//apple_ref/doc/uid/TP40015243-CH30-SW1
Does anybody have a clue on this?
Or do they run the same code in the background?
From the documentation for VoIP Push Notifications:
The device is woken only when VoIP pushes occur, saving energy.
Unlike standard push notifications, which the user must respond to before
your app can perform an action, VoIP pushes go straight to your app
for processing.
VoIP pushes are considered high-priority notifications
and are delivered without delay.
VoIP pushes can include more data
than what is provided with standard push notifications.
Your app is
automatically relaunched if it’s not running when a VoIP push is
received.
Your app is given runtime to process a push, even if your
app is operating in the background.
The biggest advantage of VoIP Push Notifications over regular ones is in my opinion, that the app gets relaunched if it was force-closed.
In general, if you wan't to use the push notifications for VoIP functionality, e.g. to notify about an incoming call, use PushKit. It was developed for this purpose. For all other cases, use regular push notifications. Your app won't go through the review if you use PushKit for an app without VoIP functionality anyways.

How can I turn off push notifications of other apps when Im using my app

I created an app which receives push notifications from my server. At the same time, if some other app is sending push notifications (for e.g., whatsaap, twitter), the notification is getting displayed when I'm using my app. I want to hide all other app's push notifications except my app's push notifications. Can this be done in iOS? I want my app to receive push notifications only from my server but not from the other apps.
Thanks in advance.
Try to think like your customer. Would they like to receive the push notifications of the other apps (whatsapp, twitter, the notification that a very important email just arrived)? Of course they would. Your App is one of many and most probably not the most important one they own.
Let me provide some background first.
Your app can only receive notifications from your service/server.
The user might have apps that are receiving notifications from the respective service/server.
e.g. if the user has FB app, then it would be receiving notification from FB servers.
In the end, you are only responsible for managing your service/server.
There is no way for you to block notifications that are received from other services from your app.
Hope this helps.

iOS Push Notifications Question

I have never coded an App with Push Notifications, and I have a very general question. Does the publisher of the App have control to push out a notification whenever they want after the App is released on the App store? I mean, for example, if an App has push notifications enabled, is there some sort of dashboard somewhere where the App developer can instantaneously push out a notification to everyone that has downloaded the App? (Assuming they have push notifications enabled)
If your app supports Push Notifications, you have to provide your own server that communicates with Apple's push infrastructure. You can implement whatever sort of dashboard you want in your server. (In lieu of actually providing this yourself, you could also use a third-party provider such as Urban Airship.)
An overview of how your provider interacts with Apple's service is here: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

Resources