iOS backgrounding execution

Hi guys,

I am developing an iOS app for iPad/iPhone for sending XMPP messages. If the user enters an area with no network coverage I want to retry sending the message when I get network connectivity. I can do this, however if the user composes a message and then hit the Home button and i'm in a  the app obviously goes into the background.

I want to be a responsible app and get into the store so know I can't piggy back onto VOIP, Music background modes so how can I still send this message out while app not in the foreground.

Can iOS wake my app up even for a short time say 30 secs every xxx minutes to let me create my XMPP session and try sending the message again? Or can I create a finite task and try for as long as possible to send my message out. Once this time limit is reached thats it and I have to wait until the app is started again?

I know there are new bg modes in iOS 7 but I want to cater for iOS 6 as well ( don't ask :D ). Do I have to use one of these new bg states for creating a long running app?

There must be something that I can do. What is the correct and best solution. Hopefully not mutually exclusive :D.

Ideally it would be iOS waking me up every so often if I have messages and me trying to send them.

Help more than welcome.
HackThePlanetAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

pgnatyukCommented:
In iOS 7 there is new feature - background fetch. Here you'll find everything:
Multitasking in iOS 7
Or here are two short tutorials:
iOS 7: Background Fetch
iOS 7 SDK: Working with Background Fetch

For an earlier version os iOS, I'd try to use the location manager - it will allow your app to work in the background. Or simply resend a message each time the network status is restored.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
HackThePlanetAuthor Commented:
Since the application is in essence a chat application (XMPP chat) would that fall under a social networking application in Apple's eyes?

I see in the Location Manager section in developer section that it talks about "social networking".

If I have messages to send and I go into the background I suppose I could start a significant change location service. If I run past allotted time I could register for a stay of execution with a finite task.

And so on until all messages are sent. Then I would rely on Push notifications for notification of incoming messages.

Sound like a plan that would get into the app store for iOS6 and 7?
pgnatyukCommented:
Sounds good.
Announcing the Winners!

The results are in for the 15th Annual Expert Awards! Congratulations to the winners, and thank you to everyone who participated in the nominations. We are so grateful for the valuable contributions experts make on a daily basis. Click to read more about this year’s recipients!

HackThePlanetAuthor Commented:
Brilliant. Many thanks pgnatyuk. Found a way forward. Ciao!
HackThePlanetAuthor Commented:
Fab answer. Helped distill into something that is now understandable. Cheers!
pgnatyukCommented:
You are welcome
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
iOS

From novice to tech pro — start learning today.