iOS app rejected for VoIP background mode - ios

I have developed an application that uses Linphone VoIP API to receive incoming calls, but I don't want the user to make outgoing calls (because that's not what my app is supposed to do).
I have enabled VoIP background mode in my .plist but the app got rejected because "it would be appropriate to add a calling-out feature or remove the VoIP background mode". Now I don't want to add call-out features but I totally need VoIP background mode.
How am I supposed to make my app run in background waiting for incoming calls if not using VoIP background mode?
I need a strong answer from someone so that I can get the functionality to work fine and also be approved for the App Store.

There's no way out. I had to implement outgoing calls features.

Related

How to make app calling without bringing it to the foreground in iOS?

When 2 iOS apps are in the background, can we make app to app calling without bringing them to the foreground? E.g., passing data/instructions from one app to the other?
You can use a server as a backend to both apps and use notifications to notify the user for the new changes.

PushKit: Can we use push kit(VoiP Push) in Chat Application without using VoiP

I want to sync my local DB with server when Push notification came, but I am not able to do it with Silent Notification because application:didReceiveRemoteNotification:fetchCompletionHandler not called when app killed by user. So, I did not know how to do it, then I read about push kit but don't know is it possible to use push kit without VoiP feature. Please tell me is it possible or not??
If not, suggest me any other idea , how will I run background task when app killed by user??
In my experience as well as others on SO - you get rejected for trying to leverage VOIP as a workaround. See below for actual response from apple dealing with a similar attempt.
2.16: Multitasking apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.
2.16 We found that your app uses a background mode but does not include functionality that requires that mode to run persistently. This behavior is not in compliance with the App Store Review Guidelines.
We noticed your app declares support for VoIP in the UIBackgroundModes key in your Info.plist but does not provide any Voice over IP services.
We recognize that VoIP can provide "keep alive" functionality that many app features would like to use. However, using VoIP in this manner is not the intended purpose of VoIP, which, as indicated in the iOS Application Programming Guide, is that: "A Voice over Internet Protocol (VoIP) application allows the user to make phone calls using an Internet connection instead of the device's cellular service."
Seems that the only way to restart the app when it was killed by user is to use PushKit.
It is possible to use PK framework in your app without Voip functionality, but I can't guarantee you, that your app will not be banned while posting to AppStore.

iOS - trying to understand multitasking, is it restricted to push notifications?

If I have an app running, and I go to my home screen and do other things. My app is still running.. right? I know it's able to get push notifications and things like that. But is it able to run any operations in the background. For example, if I have my app running in the background is it able to detect an incoming phone call, or detect some other internal events?
The various background processing modes available to an iOS application are described in the iOS App Programming Guide
If you want to detect an incoming phone call to your app (a VoIP app) then you can use the VoIP background mode. If you want to detect an incoming mobile phone call then you cannot do this in the background.

Using silent push notifications to keep an iOS app in "Background" state

Is it possible to keep an iOS app in "Background" state by sending it a silent push notification every few seconds? I want to run background tasks on a regular interval and this seems like a viable solution. If so, is this acceptable under the App Store terms of use?
The app I am planning to build would rely on this functionality and I am concerned that Apple will reject it from the App Store.
Specifically, it’s this section in the guidelines that I am not sure about:
5.1 Apps that send Push Notifications without first obtaining user consent, as well as apps that require Push Notifications to function, will be rejected
Technically my app could be used without allowing push notifications but it wouldn’t serve its primary function of recording data in the background.
In iOS7 additional background modes were added, you can check out the available background modes here.
IMHO, if you misuse one of the background modes, the app will probably be rejected, saying that , i don't think silent push notifications were meant for: keep an iOS app in "Background" state by sending it a silent push notification every few seconds.
another thing is that silent push notifications are rate limited as described here, so i'm not sure if they will be sent every few seconds.
maybe you can use another background service
This is only possible via Cydia. Which means you will need to have a Repository, and jailbroken device for this to work.
The App Store will surely reject this, as it forces other apps to work in the background.

ios7 data fetch from my server in background mode for every one hour

I'm developing an iPhone app which is to make a phone call from my app using VOIP. For that I have to connect with my server every one hour to register my device and make it available for incoming calls at any time. But in iOS7 How is it possible to connect with my server for every one hour even if it is in background mode. Any help would be appreciated.
thanks,
Jirune
There is specific information in the iOS App programming guide on implementing a VoIP app -
To configure a VoIP app, you must do the following:
Enable support for Voice over IP from the Background modes section of
the Capabilities tab in your Xcode project. (You can also enable this
support by including the UIBackgroundModes key with the voip value in
your app’s Info.plist file.)
Configure one of the app’s sockets for
VoIP usage.
Before moving to the background, call the
setKeepAliveTimeout:handler: method to install a handler to be
executed periodically. Your app can use this handler to maintain its
service connection.
Configure your audio session to handle transitions
to and from active use.
Once your socket is configured for VoIP usage, iOS will manage it for you in the background, keeping it alive and notifying your app when there is traffic

Resources