OmniFocus 2.4 for Mac and OmniFocus 2.6 for iOS introduce Push-triggered sync, a new feature that uses push notifications to keep all your devices up to date. When OmniFocus receives a push notification, it can silently pull down changes from Omni Sync Server or your own private server, so you’re ready to go the next time you open OmniFocus. This all happens in the background without OmniFocus needing to be opened manually.
How Push-Triggered Sync Works
Push-triggering doesn’t change the OmniFocus sync mechanism that’s already in place; it simply gives OmniFocus an opportunity to sync more frequently.
When OmniFocus opens it requests a unique identifier, called a Device Token, which comes from Apple. This securely-encrypted string of letters and numbers is like a private phone number that only Apple can use to send notifications to your device.
OmniFocus also creates another identifier—the Group ID—to represent all the devices you’re using. The Group ID is generated randomly, and contains no information about your devices or your sync settings. It’s simply a way to identify which devices need to send each other push notifications. The Group ID is stored in your sync database, so all devices syncing to the same database have the same ID.
Once OmniFocus has both a Device Token and Group ID, it sends that pair to a central Device Registration Server which is run by Omni (but is completely separate from the Omni Sync Server). That server keeps a list of all the Device Tokens that are associated with each Group ID. Since each Device Token is encrypted, we can’t tell anything about the devices you’re using or how you’re syncing—to Omni this list looks more or less like random data.
After OmniFocus finishes a sync, it asks the Device Registration Server to notify all the other devices associated with its Group ID. The server looks up all the Device Tokens in the group and sends them to a Apple’s push service (called “APNs”) and in turn, the push service uses those tokens to issue a push notification to each of your devices. When one of your other devices receives a notification from this push service, it triggers a background sync in OmniFocus that pulls down the changes made on the first device.
Push Notifications, Privacy, and Security
Apple requires that all push notifications be sent securely through their servers. This connection is encrypted with a certificate issued to Omni; only we can issue push notifications to OmniFocus on your devices. This means that to use push-triggered sync, OmniFocus must communicate back to Omni while it runs.
That said, we’ve taken additional steps to make sure that your data remains private. Neither the Device Token nor Group ID include any information from your database, or about your sync settings. Furthermore, if for some reason you want to change these identifiers, you can do so at any time.
Changing Your Group ID
On iOS:
- Open OmniFocus.
- Navigate to Settings from the Home screen.
- Tap Push Notifications.
- Tap Regenerate Group.
On Mac:
- Open OmniFocus.
- Navigate to Preferences from the OmniFocus menu.
- Go to the Synchronization tab and click Show Sync Details….
- Choose the Push tab and click Regenerate Group.
The next time each of your devices syncs, you should see the new Group ID appear on this push settings screen.
Additional Information
In order to deliver push notifications correctly and to improve the performance of the push system even further, Omni collects two or three additional pieces of information when OmniFocus registers with its Device Token and Group ID:
- Communications with Apple must include the Bundle ID for the running app; this can indicate whether you’re using OmniFocus for iOS or OmniFocus for iPhone on each device.
- To avoid syncing too frequently, OmniFocus includes the Tail Transaction ID in each push request. This randomly generated string identifies the last change made to the server database, so that if your iPhone already knows about the last change your iPad made, for example, the iPhone can prevent a sync and save on cellular data and battery. Transaction IDs include no information about what change was made.
- Finally, if you’re syncing with the Omni Sync Server, OmniFocus includes your Omni Sync Server Account Name when sending the Group ID to Omni (this is the same Account Name you’re already sending to our servers when you sync normally). We may use this username to help in load testing while developing push-triggered sync, so that we can ensure a smooth sync experience for everyone. If you’re using your own sync server, or syncing with a third party, OmniFocus does not include your username.
Network Requirements
Under the hood, push notifications are sent over a long-lived connection to a backing push service. This service is run by Apple, and the system maintains the network connection for you. Apple details some of the workings of their push service in a support article. If you’re not receiving pushes on your device, check this article or discuss it with your network administrator.
Opting Out
If you’d rather not use push notifications at all, that’s OK! Your sync experience will remain unchanged–you can continue to use Omni Sync Server, or your own private server, without push notifications enabled. To turn off push-triggered sync, follow one of the sets of instructions below.
On iOS:
- Open OmniFocus.
- Navigate to Settings from the Home screen.
- Tap Push Notifications.
- Tap the Enable Push Notifications switch.
On Mac:
- Open OmniFocus.
- Navigate to Preferences from the OmniFocus menu.
- Go to the Synchronization tab and click Show Sync Details….
- Choose the Push tab and uncheck the Use Push box.
This setting is synced, so when you opt out on one device, push notifications will be disabled for all your devices. Make sure that you sync each device after turning push notifications on or off, so that the changed preference is reflected everywhere.