Non appena installo e apro la mia app per la prima volta, richiede immediatamente i servizi di localizzazione, anche se non è stato chiamato startUpdatingLocation. Non ho nemmeno assegnato un'istanza CLLocationManager a quel punto. Vorrei che questo prompt fosse eseguito pigramente dopo che ho effettivamente effettuato la chiamata in modo che l'utente non lo spegni alla cieca. Il flusso è cambiato recentemente con iOS? Ricordo che una volta si chiedeva pigramente. Sto usando il firmware 5.1.Richiesta di servizi di localizzazione
risposta
Questo è interessante. Ho verificato la tua ipotesi, che il gestore della posizione non è stato nemmeno assegnato e tuttavia viene visualizzato il dialogo Permesso di localizzazione iOS. Ho provato la seguente risoluzione dei problemi. Dopo ogni passaggio ho eseguito il progetto su un dispositivo e ho potuto solo visualizzare il popup di posizione all'ultimo passaggio.
- Nuova app
- richiedono location-servizi in info.plist
- richiedono GPS in info.plist
- collegamento CoreLocation al progetto
- Importa Core Location in intestazione
- Marchio e sintetizzare una proprietà per un gestore località
- chiedere CLLocationManager per + autorizzazioneStato
- chiedere CLLocationManager per + locationServicesEnabled
- alloc init un'istanza CLLocationManager
- dire CLLocationManager per avviare l'aggiornamento posizione.
Solo il passaggio finale ha generato un prompt. Per essere sicuro di aver persino creato un viewController che ha spinto un secondo controller di visualizzazione che inizializza un CLLocationManager e ha iniziato ad aggiornare la posizione. Il popup delle autorizzazioni veniva visualizzato solo quando veniva premuto il secondo controller della vista. Questo è tutto con l'ultimo Xcode in esecuzione su 5.1.
Ho dimostrato che i servizi di localizzazione richiedono solo il permesso nel momento esatto in cui provi e attivi le posizioni come nei precedenti SDK. Forse controlla il tuo codice, magari incollane un po 'qui per poter andare più nel dettaglio. :)
Lo proverò anche solo per essere sicuro. Tutta la mia gestione della posizione viene effettuata tramite un singleton, quindi ho solo una chiamata a startUpdatingLocation nella mia intera app. Ho un breakpoint e non viene mai chiamato. L'unica altra possibilità a cui riesco a pensare è che uno dei quadri dipendenti, per qualsiasi ragione, lo stia innescando. Il mio progetto è grande, quindi sarà un * pain * ricreare il file di progetto. Inoltre sto usando e aggiornando il file di progetto da iOS 3.0. –
Utilizzi forse una rete pubblicitaria o un sistema di telemetria? Andare alla barra laterale dei punti di interruzione, fare clic sul segno più nella parte inferiore e nella casella Simbolo digitare '- [CLLocationManager startUpdatingLocation]' e si dovrebbe interrompere per startUpdatingLocation su tutto il progetto e le librerie. Potrebbe anche valere la pena ascoltare '-startMonitoringSignificantLocationChanges' – jackslash
Grazie per questo, questo è un buon trucco per sapere! Era perché stavo allocando (non mostrando) un MKMapView in background all'avvio per la visualizzazione successiva. –
- 1. Non viene richiesto di abilitare i servizi di localizzazione nell'app
- 2. Riattivazione dei servizi di localizzazione per l'app per iPhone
- 3. Importazione com.google.android.gms.location.LocationServices, non può aggiornare i servizi di localizzazione
- 4. Notifiche per le modifiche ai servizi di localizzazione?
- 5. Verifica se i servizi di localizzazione sono abilitati
- 6. Polling in background iOS senza servizi di localizzazione
- 7. iOS, CLLocationManager: visualizzazione del popup "Servizi di localizzazione modificabili"
- 8. Quali servizi di localizzazione degli errori funzionano con React Native?
- 9. localizzazione addon di Firefox
- 10. localizzazione di dati dinamici
- 11. Come si apre la schermata dei servizi di localizzazione dalla schermata delle impostazioni?
- 12. Rilevare se i servizi di localizzazione sono abilitati per la mia app
- 13. migliori servizi online per la localizzazione i18n del progetto di binari esistente
- 14. Come verificare se i servizi di localizzazione sono attivi o no?
- 15. Come utilizzare lo strumento di localizzazione dei servizi comuni in Ninject 2
- 16. Informazioni sul modello di localizzazione del servizio
- 17. Localizzazione di timeAgoInWords in CakePHP
- 18. Java: localizzazione di stringhe statiche
- 19. C# libreria di classi Localizzazione
- 20. Localizzazione di chiavi Info.plist nidificate
- 21. Servizi di dominio vs Servizi applicativi
- 22. localizzazione Base + Storyboard + .strings -> nessuna localizzazione
- 23. UIAlertView come "Attiva i servizi di localizzazione per consentire alle mappe di determinare la tua posizione". Impostazioni + Annulla
- 24. Come posso chiedere all'utente di attivare i servizi di localizzazione dopo che l'utente ha negato il loro utilizzo
- 25. La finestra di dialogo che chiede se l'utente vuole consentire l'uso dei servizi di localizzazione compare e scompare in iPhone
- 26. AngularJS: Performing richiesta $ http all'interno di servizi personalizzati e di ritorno dei dati
- 27. Richiesta di servizi Web di Exchange 2007/2010 con SOAP + XML su HTTPS in Android
- 28. DDD servizi di infrastruttura
- 29. Localizzazione HTML5 da GPS esterno
- 30. Localizzazione Android
Stai parlando di quella finestra di dialogo (app *** vuole usare ...) che mostra la prima volta che l'utente avvia la tua app? –
Sì, lo fa per qualche motivo in 5.1. – ssteinberg
@rokjarc Sì, questo è quello. –