Press ESC to close

Xamarin Forms Lokasyon Almak (Xamarin.Essentials)

Merhaba arkadaşlar, bu yazımızda Xamarin ile nasıl kullanıcının lokasyonu alınır bundan bahsedeceğiz. Hemen hemen her uygulamada kullanıcının lokasyonuyla işlemler yapıyoruz. Bunun için bu konu oldukça önemli. Xamarin.Essentials‘den önce bu işlemi Xam.Plugin.Geolocator paketiyle yapabiliyorduk. Artık çok daha kolay bir şekilde ek bir paket yüklemeden yapabiliyoruz. Önceki yazıya buradan ulaşabilirsiniz. Xamarin.Essential hakkında daha fazla bilgiye ise buradan ulaşabilirsiniz.

Kullanıcının lokasyonunu getiren fonksiyon asenkron olması gerekiyor. Çünkü kullanıcının konumunu almak için öncelikle kullanıya izin sorması gerekiyor. Ardından bu izne göre işlemler yapacak. Eğer kullanıcı izin verirse ve donanımsal olarak bir sorun yoksa konum size ulaşır ama her senaryoyu düşünmemiz gerekiyor burada. Bir çok durumu yönetmek lazım.

Aşağıdaki kod parçasıyla, kullanıcı lokasyon izni vermezse PermissionException hatası fırlatıyor. Cihaz lokasyon desteklemiyorsa ya da herhangi bir donanımsal sorundan dolayı bir problem oluşursa diğer catch bloklarına düşecektir. Siz de buna göre kullanıcıya hata mesajları gösterebilir veya yol gösterebilirsiniz. Kullanıcı lokasyon izni vermedi ve sonrada yine lokasyon ile alakalı bir işlem yapmaya çalıştığında ayarlara gidip buradan kendisi açması gerekiyor. Bu işlem için kullanıcıya ayarlara gitmek istediğini sorabilirsiniz. Bu bilgilendirmenin ardından ayarlara atabilirsiniz kullanıcıyı.

async void GetLocation()
        {
            try
            {
                var location = await Geolocation.GetLastKnownLocationAsync();
                if (location != null)
                {
                    Latitude = location.Latitude.ToString();
                    Longitude = location.Longitude.ToString();
                }
            }
            catch (FeatureNotSupportedException ex)
            {
                Debug.WriteLine(ex.Message);
            }
            catch (FeatureNotEnabledException ex)
            {
                Debug.WriteLine(ex.Message);
            }
            catch (PermissionException ex)
            {
                Debug.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }

Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir