I would suggest you take a look at CloudKit. There are several reasons.
- If you decide to just build one app and somehow have driver
functionality that is different from users (maybe by having drivers
register and sign-in) then the app can post shared data to a public
online database accessible to all users. You could use information
in this scenario to post local notifications as the need arises.
- As iOS updates you will not be dependent on third party libraries
- If you decide to create a driver app and a separate user app,
CloudKit will allow you to share data across these apps.
- Apple deals with the security and availability.
- Overall the process is very easy to implement.
- You can combine the local notifications with the public database to
schedule reminders, alert users etc.
- CloudKit when done correctly will be essentially free. Just transfer
CKAssets rather than raw data and your transfer/storage limits
become negligible.
- You can also access your CloudKit databases from external web
services/websites if you want to extend the data further.
- You can use CloudKit subscriptions to sync up user information
automatically
NB - As pointed out in comments this is new technology. It is in the
second generation and I prefer it because if one uses it creatively
then you can simulate the external push notification behavior together
with background support. CloudKit removes the need for a third party web server from which to push the external notifications (as the real notifications take place by writing to the shared database).
Check out my detailed answer on SO for sharing the data between apps with CloudKit. Here is a link to some CloudKit videos that further describe how CloudKit works. Apple has lots of documentation and sample projects available. You can review the developer website for more info on CloudKit.
CloudKit Quick Start