objective-c - CLLocationManager 定位
为情所困
为情所困 2017-05-02 09:25:35
0
1
555

开启定位有两个方法,startMonitoringSignificantLocationChanges和startUpdatingLocation这两个方法有什么区别吗?

为情所困
为情所困

membalas semua(1)
漂亮男人

1. Terdapat dua cara untuk mencapai kedudukan latar belakang:
perkhidmatan lokasi standard (memanggil startUpdatingLocation CLLocationManager)
perkhidmatan perubahan lokasi yang ketara (memanggil startMonitoringSignificantLocationChanges CLLocationManager)
2 🎜 >Yang pertama (startUpdatingLocation) ialah kedudukan standard Jika anda ingin menggunakannya di latar belakang, anda mesti menambah atribut mod latar belakang yang diperlukan dalam fail info.plist dan pilih Daftar aplikasi untuk nilai kemas kini lokasi.
Apabila yang pertama (startUpdatingLocation) berjalan di latar belakang, ia mungkin digantung atau ditamatkan oleh sistem kerana masalah sumber, tetapi ia akan dibangkitkan sebaik sahaja terdapat kemas kini Walau bagaimanapun, apabila sistem masih kekurangan sumber semasa kemas kini, ia akan digantung panggilan perwakilan. Jika anda mempunyai keperluan masa nyata yang tinggi, ini mungkin tidak sesuai dan sukar untuk mengawal prestasi mesin pengguna.
Bekas (startUpdatingLocation) tidak akan dibangkitkan semula jika ia ditutup secara manual oleh pengguna.
Kedudukan dahulu adalah berdasarkan kedudukan gps/stesen pangkalan/wifi yang mana rangka kerja CoreLocation digunakan mempunyai set peraturannya sendiri.
Yang terakhir (startMonitoringSignificantLocationChanges) menggunakan kedudukan stesen pangkalan, jadi peranti mesti mempunyai modul telefon Atribut xx boleh ditetapkan dalam plist untuk mengehadkan peranti yang boleh dimuat turun dan dipasang.
Yang terakhir (startMonitoringSignificantLocationChanges) akan dibangkitkan untuk memanggil perwakilan sama ada ia berada di latar belakang atau secara manual ditutup oleh pengguna. Terdapat hanya 3 kaedah untuk menghalang kemas kininya. (1) Pengguna mematikan perkhidmatan penentududukan (2) Pengguna mematikan perkhidmatan penentududukan untuk apl (3) Peranti berada dalam mod kapal terbang atau tidak boleh menghidupkan perkakasan yang diperlukan (menduga ia adalah perkakasan modul penentududukan).
Bilakah yang terakhir (startMonitoringSignificantLocationChanges) akan dikemas kini? Ia dikemas kini apabila stesen pangkalan diganti. Jadi kekerapan kemas kini adalah berkaitan dengan ketumpatan stesen pangkalan. Kawasan bandar dikemas kini lebih kerap daripada kawasan pinggir bandar. Oleh itu, ramai pelajar mengatakan bahawa tiada kemas kini kerana mereka masih berada dalam kumpulan stesen pangkalan yang sama.
Yang pertama menggunakan lebih banyak kuasa dan mempunyai ketepatan yang lebih tinggi daripada yang kedua.
3. Ciri biasa antara kedua-dua:
Kedua-duanya memanggil semula kaedah perwakilan yang sama semasa mengemas kini maklumat lokasi: -(void)locationManager:(CLLocationManager
)manager didUpdateLocations:(NSArray )lokasi;4. Muat naik maklumat:
Memandangkan tugas latar belakang hanya diperuntukkan masa yang terhad untuk melaksanakan operasi yang diperlukan, jika ia tidak selesai sebelum tamat masa (seperti permintaan rangkaian), apl akan ditamatkan. Berikut ialah kaedah untuk memohon 10 minit tambahan untuk anda melaksanakan operasi yang diingini dan memohon tugas latar belakang: beginBackgroundTaskWithExpirationHandler (Saya tidak akan pergi ke butiran, anda boleh menyemak maklumat tentang cara menggunakannya).
5. Ringkasan:
Kedua-dua kaedah mempunyai kelebihan dan kekurangannya sendiri, yang ditentukan mengikut senario penggunaan Apl yang dijalankan di latar depan biasanya memerlukan kedudukan masa nyata yang tepat dan mempunyai masa berjalan yang terhad kedudukan standard, seperti aplikasi navigasi. Jika kelajuan pergerakan adalah pantas (jarak berubah dengan ketara) dan kedudukan (pemantauan) diperlukan untuk masa yang lama, yang terakhir boleh dipertimbangkan, seperti aplikasi panggilan teksi.
Dipetik dari sini

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan