2013-03-20 20 views
8

Sto cercando di sviluppare un'applicazione turistica per una città, dove quando l'utente è vicino a un "luogo di interesse" potrebbe ottenere una spinta (locale) sul proprio dispositivo.Utilizzo di notifiche push basate sulla posizione su iOS

Ad esempio, vorrei aggiungere 100 punti di interesse sulla mia app e 100 messaggi per ogni POI da mostrare quando l'utente è nel raggio di azione, ad es. "Sei vicino alla Cattedrale di .."

Questo scenario è possibile? È possibile controllare la posizione degli utenti, ad es. ogni 10 minuti anche quando l'applicazione viene uccisa, e quando nel raggio d'azione si attiva una spinta locale? Quanta batteria dovrebbe scaricare? Se l'utente chiude il GPS, cercherebbe di utilizzare il segnale 3G/wifi per ottenere la posizione?

Se sì, potresti guidarmi nel modo giusto su ciò che dovrei leggere sull'argomento, forse alcuni tutorial e articoli?

risposta

2

Sì, è possibile. È necessario disporre di alcuni "luoghi" (coordinate o indirizzi) memorizzati su theapp localmente. La vicinanza a un "luogo" memorizzato può essere verificata tramite Reverse geocoder.

Controllare questo Wonderful SO Question, molto simile al tuo

+1

Ma questo può essere verificato quando l'applicazione viene ucciso (non in background). Quanta batteria dovrebbe scaricare? Se l'utente chiude il GPS, cercherebbe di utilizzare il segnale 3G/wifi per ottenere la posizione? –

0

Quando l'applicazione viene ucciso, che cosa esattamente avrebbe ricevuto gli aggiornamenti della posizione?

In background però, è possibile impostare gli aggiornamenti di posizione in base alla vicinanza e al tempo.

check How do I get a background location update every n minutes in my iOS application?

Per quanto riguarda il GPS vs. 3g/wifi, l'utente ha la possibilità di consentire o servizi di localizzazione per un app, oppure no. iOS gestirà quindi se verrà utilizzato il segnale GPS o cellulare per determinare la posizione. Leggi il servizio di cambio di posizione significativo here. L'utilizzo del servizio di modifica significativa utilizzerà una posizione di cella maggiore rispetto al blocco GPS per determinare la posizione e viceversa per il servizio di localizzazione standard. Osserva anche la precisione della posizione per ulteriori informazioni sulla conservazione della batteria.

+0

Ma allo stesso modo come si costruisce un'app di allarme? Anche quando l'app viene uccisa, se il tempo è il tempo predefinito, la spinta locale verrà attivata correttamente? Pensavo che potresti anche fare smth così con il gps. –

5

è possibile. È possibile utilizzare la suddetta tecnica descritta nel post this. Puoi estenderlo utilizzando CLLocationManager :: startMonitoringSignificantLocationChanges per riavviare il processo di ascolto delle posizioni dopo che l'app è stata uccisa. A seconda delle esigenze di precisione ci sono molte altre ottimizzazioni che si possono fare per quanto riguarda la durata della batteria, come il controllo più frequente quando un utente accelera ecc.

Ho sviluppato un library che gestisce questi dettagli per voi (sia per Android che per iOS). Il download include un'applicazione di esempio che dimostra come utilizzarla. Sentiti libero di dare un'occhiata.

2

Questo potrebbe essere troppo tardi per la tua domanda, ma per chiunque altro ne abbia bisogno. GeoFencing è una buona opzione.

Ecco un video che spiega cosa è geofencing http://academy.pulsatehq.com/7-things-about-geofencing

E se si utilizza la piattaforma ionica, ecco il link al plugin https://github.com/cowbell/cordova-plugin-geofence

Geofencing risolverà esattamente il tuo problema. Basta creare un gruppo di geofence situato in questi siti turistici e quando l'utente entra in un determinato raggio di queste posizioni, l'utente riceverà una notifica.

Buona fortuna