English    Deutsch
This page explains iOS limitations regarding the background operation of apps. To reduce the battery consumption non-Apple apps are not allowed to run in the background (aside from a few exceptions, please see below). So it isn’t possible to sync at regular intervals, change the volume of the device or do anything else other than displaying reminders (which are displayed by iOS, so the app also isn’t running in the background when reminders are displayed):

Multitasking options under iOS4 and newer


iOS4 and later versions of iOS (at least until iOS6) offer a restricted kind of multitasking. Apple’s intention is to make the system easy to use and to prevent the battery from being drained too fast. However due to these restrictions some useful functions are simply impossible (like automatic syncing in the background):

Only three types of applications may run in the background:

1. "audio" applications but only while they are playing audio, once they stop playing, they will be stopped at all and cannot start by themselves again.

2. "location" aware applications can wait in the background and are started when the location changes, but they do not run all the time.

3. "voip" applications they can run at regular intervals and are even started automatically when the phone is booted. However they have to have "VoIP", i.e. telephone functionality (like Skype or Sipgate). CalenGoo has no telephone functionality so it cannot declare itself as “voip” app.

Please see here for detailed documentation about these application types:

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

All other apps can only run up to 10 minutes after they were exited, then iOS stops them (and when they refuse, it kills them).

So the only thing CalenGoo can do is to sync in these 10 minutes after the app was exited. You can turn this feature on under "Settings", "Display and Use", "General", "Sync on exit" in CalenGoo.

Notifications under iOS4/5/6

As mentioned above, apps cannot run in the background to display notifications themselves. Instead iOS4/5/6 supports “local notifications”. They allow to display a popup at a certain time with a certain message and a certain sound while the app is not running. For this purpose CalenGoo has to prepare the list while it is running and then send it to iOS. iOS will then display these pop-up notifications at the appropriate time.

CalenGoo sends a list of pop-up notifications to iOS
These pop-up notifications usually have two buttons:



A “Close” button and an application-specific button. In this case “View/Snooze” or “Stop alert”. The “Close” button simply discards the popup. However if “Repeat alarm every minute” is activated it will appear a minute later again. The application-specific button “View/Snooze” or “Stop alert” starts the app, CalenGoo. Until you tap this button, CalenGoo is not running and cannot react to anything. When you run it by tapping this button, it can display the “Snooze” screen (View/Snooze) or stop the reminder (Stop alert) if “Repeat alarm every minute” was activated.

The reason why CalenGoo only supports "Repeat alarm every minute" and not e.g. "Repeat alarm every 5 minutes" is that iOS only offers to repeat a notification "*every* second/minute/hour/day/...". It cannot be configured, only "every" but not e.g. "every 5" is supported.

Here you can find further technical information about the functions local notifications offer:

http://developer.apple.com/library/ios/#documentation/iphone/Reference/UILocalNotification_Class/Reference/Reference.html

Synchronization via the iOS calendar

As mentioned above, non-Apple apps are not allowed to run in the background. However Apple apps can run in the background. So an option to sync CalenGoo via push is to sync it via the iOS calendar. That means CalenGoo will know all events immediately when it is started. However it does not know these events before it is started, because it isn’t running. So even if the iOS calendar already synced these events to your device, CalenGoo cannot know them and cannot generate/display reminders for these events. It has to be started once, to “see” these new events and generate the necessary reminders.

However you can certainly just let the iOS calendar display the reminders, then you will get the reminders also if CalenGoo hasn’t been started. But the disadvantage is that the iOS calendar does not allow to snooze reminders and it does not start CalenGoo when opening the reminder.