So we could broadcast each announcement message to everybody (all current listeners) in real-time (like what Twitter would do) and let the client-side filter out the irrelevant messages (around 99.99%).
Or we could reduce that bandwidth by having clients update the server periodically (eg., every 5 minutes) with their location, then for each announcement, a server would locate clients within a reasonable radius based on their last reported position and only notify them directly through a push notification of some sort; the clients would still do some filtering, but this would reduce incoming traffic considerably.
I’m not sure which is worse: a server updating a huge number of clients in near real-time, or a huge number of clients updating the server with their geographical location every 5 minutes or so.
Or, an alternative is for the clients to poll the server every 15-30 seconds, but this seems even worse in terms of traffic. (Althought this approach is probably ok if we used an existing platform like Twitter.)
Well you will need to tag your content for preferences. On account creation you do a questionnaire. So that is now in a database. The you tie your app into the location services. That would ping back and everything in "range" would be tagged and made available in the apps offer screen. With a single notification of offers in your area. I would not suggest using another service as your transport as that can get your Data banned.