Zip Code Zen Man

Audio interview with David Rosdeitcher, a.k.a. Zip Code Man, a popular Pearl St. Mall performer in Boulder, about his life in juggling, zip codes, and zen.

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Implementasi GPS pada Aplikasi iOS

Mengimplementasi GPS pada aplikasi iOS dengan Swift tanpa menggunakan eksternal library menjadi hal yang cukup tricky.

Sejak aplikasi Gojek booming, banyak aplikasi berbasis peta mulai bermunculan. Mulai dari memanfaatkan navigasi, gambar peta, hingga geolocation. Penyedia peta yang paling terkenal adalah Google Maps. Banyak developer yang mendapatkan kemudahan dari Maps API dalam menciptakan aplikasi navigasi.

Namun, sebelum menggunakan Maps API atau API lainnya, sebuah pertanyaan muncul. Bagaimana cara mendapatkan lokasi ponsel dan data apa saja yang mampu digunakan dari lokasi tersebut? Jawaban pertanyaan pertama cukup mudah, menggunakan GPS. Jawaban pertanyaan kedua akan dijawab sepanjang artikel ini.

Banyak developer yang berpikir bahwa penggunaan GPS dalam iOS cukup sulit karena kurangnya dokumentasi yang ditawarkan di website. Sehingga banyak yang berpikir untuk menggunakan external library sebagai solusi terbaik. Padahal, library yang ditawarkan oleh Apple sudah cukup powerful, menurut saya yang pernah mengembangkan aplikasi sejenis GoFood di iOS.

Seringkali dalam menggunakan aplikasi, kita menggunakan GPS untuk mendapatkan posisi kita. Melalui sinyal GPS, data dari sinyal tersebut diproses untuk penggunaan selanjutnya. Pertanyaannya data apakah yang didapatkan dari GPS? Jawabannya adalah koordinat GPS berupa nilai longitude dan latitude. Apakah itu?

Ketika kita melihat sebuah globe (gambar di atas), kita akan melihat 2 garis yang agak mengganggu kita, yaitu garis lintang dan garis bujur.

Garis bujur tersebut lebih dikenal dengan nama longitude akan menunjukkan angka desimal dari sudut bundar bumi horizontal. Titik diawali dari angka 0 ke 180 derajat dan 0 ke -180 derajat pada arah sebaliknya. Titik 0 berada di negara Inggris, mengarah ke Indonesia akan menjadi angka positif.

Sedangkan garis lintang, atau lebih dikenal dengan nama latitude akan menentukan lokasi berdasarkan garis khatulistiwa. Titik diawali dari angka 0 ke 90 derajat menunjukkan ke arah kutub utara dan 0 ke -90 derajat menunjukkan arah ke kutub selatan.

Pada setiap lokasi, kita akan mendapatkan titik longitude dan latitude yang berbeda-beda. Contohnya :

Setelah mendapatkan nilai longitude dan latitude, data bisa dikirimkan ke API tertentu supaya bisa mendapatkan informasi.

Namun bagaimana cara mendapatkan nilai di atas menggunakan GPS? Tenang, penggunaannya cukup mudah.

Ketika kita mengembangkan aplikasi iOS, servis gratis yang diperbolehkan untuk digunakan tanpa izin adalah pemakaian internet. Selain itu, setiap servis harus meminta izin pemakaian kepada pengguna. Contohnya pada aplikasi bawaan Apple yaitu Weather yang memerlukan lokasimu untuk menentukan perkiraan cuaca di posisimu.

Untuk mengatur penggunaan servis location, kita perlu menambah baris dalam info.plist. Dalam info.plist, terdiri atas banyak key-value. Key merupakan pengaturan yang ingin kita ubah, sedangkan value adalah data barunya. Apabila kamu melakukan hover atau mengarahkan pointer ke salah satu data pada plist, kamu akan melihat tombol “+”. Klik tombol itu dan tambahkan “Privacy — Location When In Usage Description” pada bagian key. Pada bagian type, kita biarkan saja, sedangkan pada bagian description, kita perlu menuliskan kenapa kita memerlukan servis tersebut.

Screenshot by Author

Pada contoh ini, saya menulis “We need your location to get the current longitude and latitude.” Apabila nanti kalian menjalankan aplikasi kalian, pada bagian permintaan permission, description kalian akan tertulis value tersebut. Jadi, tuliskan dengan jelas, alasan penggunaanya.

Seperti yang sudah disebutkan di atas bahwa kita tidak akan menggunakan external library, maka pada penjelasan berikut ini, saya akan membahas internal library milik Apple yang menangani sistem location kita. Library itu dinamakan CLLocationManager.

Pada bagian atas ViewController kita perlu memanggil library ini untuk digunakan di banyak tempat. Jangan lupa untuk melakukan penyedia library ini yaitu CoreLocation.

Selanjutnya, kita akan memasang CLLocationManagerDelegate untuk mengatur sistem GPS. Dalam delegate ini, terdapat 2 method wajib, yaitu

Method success akan mengembalikan koordinat ponsel berdasarkan sinyal GPS. Koordinat yang didapatkan akan banyak sekali karena proses yang dilakukan oleh sinyal GPS berulang-ulang. Sehingga apabila kita ingin menggunakannya, kita perlu memanggil locations.last untuk mendapatkan koordinat terakhir yang didapatkan oleh GPS tersebut.

Method failed berguna untuk menangani proses yang akan terjadi apabila sinyal GPS tidak berhasil mendapatkan koordinat atau permission location telah ditolak.

Setelah memasang CLLocationDelegate, kita perlu mengaturnya dalam method viewDidLoad() supaya kedua fungsi ini mampu dijalankan. Jangan lupa untuk memasukkan permintaan permission pada method tersebut.

Mungkin kalian baru pertama kali melihat method yang disebutkan di atas, di sini saya akan mengartikan setiap method yang digunakan di atas. Beberapa method di atas merupakan method yang dibawa oleh CLLocationManager, library yang mengatur lokasi dan penggunaan GPS.

Pertama, kita memanggil method requestWhenInUseAuthorization(), method ini berfungsi untuk mengecek app permission terhadap location service. Apabila pengguna mengizinkan atau tidak, maka tampilan permission tidak akan muncul, tetapi apabila belum pernah melakukan permintaan akses terhadap pengguna, maka tampilan permintaan permission akan muncul.

Selanjutnya, aplikasi akan menjalankan method requestLocation(). Pada saat method ini dipanggil, aplikasi akan memulai mencari titik koordinat tanpa henti hingga pencarian dihentikan. Apabila pencarian ditemukan, method locationManager(… didUpdateLocations …) akan dijalankan. Berdasarkan kodingan di atas, kita menggunakan locations.last yang akan mengambil lokasi terakhir yang didapatkan. Setelah itu, aplikasi akan menjalankan method stopUpdatingLocation(). Pada method ini, aplikasi akan berhenti menggunakan sinyal GPS ataupun mencari koordinat lokasi ponsel.

Berbeda dengan hasil sukses, jika gagal, maka aplikasi akan menjalankan method locationManager(… didFailWithError …). Berdasarkan kodingan di atas, kita akan hanya melakukan print error yang kita dapatkan tanpa menghentikan proses pencarian.

Apabila kalian menerapkan sistem pencarian koordinat ini, jangan lupa untuk memberikan peringatan terhadap pengguna jika proses pencarian terus menghasilkan kegagalan. Mengapa? Karena selain proses ini akan menggunakan sinyal GPS yang terus menerus dan penggunaannya membuat baterai menjadi lebih boros.

Terkadang kita terlalu meremehkan library yang sudah ada dan beralih untuk menggunakan library buatan orang lain. Di sini kita belajar untuk menggunakan sistem yang disediakan oleh Apple, yaitu CoreLocation. Dalam implementasinya, banyak hal yang perlu diperhatikan, mulai dari proses perizinan hingga proses pencarian. Hal-hal kecil yang dilewati akan berdampak terhadap pemakaian sumber daya ponsel.

Mulai sekarang, berlatihlah untuk tidak terlalu banyak memakan sumber daya ponsel, seperti memory, energy, CPU, dan lain-lain agar aplikasi tetap ringan dan nyaman digunakan.

Semoga bermanfaat dan selamat mencoba …

Add a comment

Related posts:

Finding Lagom

Life is hard. It is rarely what we expect to be. If you had asked me 10 years ago if I could imagine being married and having four kids (and one more on the way), the thought would have seemed too…

Tax Abatements In Columbus

After decades of Columbus city government gifting millions in tax abatements to wealthy developers and corporations in exchange for promises of job creation, the tide of public opinion on the issue…

Instalando ELK

Es muy importante instalar Java antes de instalar Elasticsearch o cualquier otro componente de Elastic Stack, tan sencillo como: Existen varias maneras de instalar Elasticsearch, en mi caso voy a…