Giriş
Navigasyon SDK'sı (Nav SDK), özellikle yeni sürücüler veya bölgeye aşina olmayan sürücüler için çok faydalı olabilecek, sınıfının en iyisi adım adım yol tarifi özelliği sunar. Ancak, şirketlerin sürücülerin dikkatini adım adım navigasyon kullanıcı arayüzüyle yoldan uzaklaştırmak istemediği ancak yine de araç konumlarını izlemek ve takip ettikleri rotayla ilgili etkinlikleri dinlemek istediği belirli kullanım alanları vardır. Özellikle tehlikeli maddeler taşıyorlarsa kamyon sürücüleri bu duruma örnek verilebilir. Farklı yöntemlerle (ör. kısa mesafelerde yürüyerek) teslimat yapan diğer şirketler de adım adım yol tarifinin etkinleştirilmesini gerektirmeyebilir. Bu da cihazın pil ömrünü uzatır.
Kapsam
Bu belgede, şirketlerin Nav SDK'dan navigasyon haritasını (görünüm) nasıl gizleyebileceği ve konum izleme, etkinlik abonelikleri ve geri çağırmalarla ilgili olarak Nav SDK'nın tüm özelliklerinden yararlanmaya devam edebileceği açıklanmaktadır. Gözetimsiz modda Nav SDK'dan alınan veriler, araçları izleme ve tahmini varış zamanlarını daha hassas bir şekilde anlama özelliğini geliştirmek için kullanılabilir. Bu da sonuç olarak şeffaflık ve verimlilik sağlar.
Navigation SDK
Navigation SDK, sürücü uygulamasına eklenen yerel bir Android / iOS kitaplığıdır. Mobilite bağlamında şunlardan sorumludur:
- Uygulamayı çalıştıran cihazdan yola sabitlenmiş konumlar alma Yollara sabitlenen konumlar, Android'in FusedLocationProvider'dan (FLP) daha hassastır. Çünkü konumları en yakın yol segmentine sabitlemek için Google'ın yol ağını kullanır. Bu da FLP'den alınan tahmini varış zamanlarını ve diğer bilgileri çok daha doğru hale getirir.
- Sürücülerin gerçek zamanlı trafik ve diğer rota kısıtlamalarını dikkate alarak A noktasından B noktasına verimli bir şekilde ulaşmasını sağlayan adım adım yol tarifi deneyimi.
- Etkinlik işleyiciler ve kayıtlı geri çağırmalar aracılığıyla rota ilerlemesine, konuma, hıza vb. göre etkinlikleri tetikleme.
Varsayılan deneyim
Müşteriler Nav SDK'yı uyguladığında adım adım yol tarifi özelliğine ihtiyaç duyduğu varsayılır. Bu nedenle, Nav SDK'nın belgelerinde (Android ve iOS), adım adım yol tarifinin etkinleştirildiği Nav SDK'nın nasıl uygulanacağıyla ilgili talimatlar yer alır.
Android'de uygulamadaki adım adım harita oluşturma işlemi SupportNavigationFragment veya NavigationView kullanılarak gerçekleştirilirken iOS'te GMSMapView kullanılarak gerçekleştirilir. Bu kullanıcı arayüzü öğeleri, uygulamanıza etkileşimli harita ve adım adım gezinme kullanıcı arayüzünü ekler.
Sonraki bölümde, hem Android hem de iOS için varsayılan Nav SDK'sını adım adım yol tarifinin etkinleştirildiği kodla, başsız Nav SDK koduyla karşılaştırarak gerekli değişiklikleri vurguluyoruz.
Çözüm
Android
Android'de bu, Nav SDK örnek uygulamasının bir parçası olarak gelen Java kodudur.
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
setContentView(R.layout.activity_nav_fragment);
mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Gördüğünüz gibi, görünüm, gezinme deneyimini çizmek için kullanılması gereken düzene işaret ediyor ve bu durumda NavigationView yerine SupportNavigationFragment oluşturuluyor.
Nav SDK'nın başsız modda başlamasını sağlamak için bu iki talimatı kaldırmamız yeterlidir. Amaç, başsız ve başsız olmayan (etkin gezinme) arasında geçiş yapmaksa başsızın kullanılıp kullanılmayacağını belirlemek için bir değişken kullanılabilir. Örneğin:
Boolean mHeadless = true;
Daha sonra şu şekilde kullanılabilir:
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
if(!mHeadless) {
setContentView(R.layout.activity_nav_fragment);
mNavFragment =
(SupportNavigationFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
}
mHeadless
değişkeni, buna göre başsız modu etkinleştirecek veya devre dışı bırakacak bir kullanıcı arayüzü bileşenine (ör. açma/kapatma düğmesi) bağlanabilir.
![]() |
![]() |
Etkin navigasyonla çalışan Nav SDK'sı (başsız mod kapalı) | Aynı uygulama, ancak artık Nav SDK'sı başsız modda çalışıyor |
Yukarıdaki sağ örnekte de görebileceğiniz gibi, Nav SDK ile gezinme arka planda çalışır ancak adım adım yol tarifi deneyimi devre dışıdır.
iOS
iOS'te, MapView başlatma işlemi sırasında aşağıdaki ayarı ekleyerek başsız mod çok kolay bir şekilde kullanılabilir: \
mapView.isHidden = true
Örneğin:
/// The main map view.
private lazy var mapView: GMSMapView = {
let mapView = GMSMapView(frame: .zero)
mapView.isHidden = true /// Make it headless!
mapView.isNavigationEnabled = true
mapView.settings.compassButton = true
mapView.delegate = self
return mapView
}()
Nasıl görüneceğini inceleyin. Ekran, kullanıcı arayüzünün uygulanma şekline bağlıdır. Ekran görüntüsü yalnızca mapView'in gizlenmesinin etkisini göstermek için verilmiştir:
![]() |
![]() |
Etkin navigasyonun çalıştığı
iOS örnek uygulaması |
Gözetimsiz modda aynı uygulama |
Uygulamada Dikkat Edilmesi Gereken Hususlar
Başsız mod, gezinme haritasını ekrandan gizlemekten başka bir şey yapmadığı için yalnızca ekran süresi kaydedilir. Bu da cihazda daha uzun pil süresi sağlar. Ancak Nav SDK çalışmaya devam edeceğinden konum güncellemeleri ve tüm etkinlik geri çağırmaları normal şekilde tetiklenir. Bu nedenle, bu yapılandırmanın kullanılması herhangi bir yan etkiye neden olmaz.
Sonuç
Bu belgede, Nav SDK'nın ne kadar esnek olduğu ve farklı işletim sistemlerindeki kısıtlamalar göz önünde bulundurulduğunda neler yapılabileceği gösterilmektedir. Ayrıca müşterilerin, dikkat dağıtıcı unsurları önlemek ve güvenliği artırmak için sürücü deneyimlerini özelleştirmelerine de olanak tanır.
Ek Kaynaklar
Yukarıda belirtilen nedenlerden dolayı navigasyon sırasında bildirimlerin devre dışı bırakılması gerekiyorsa bu da yapılabilir. Lütfen Nav SDK'da adım adım bildirimleri değiştirme başlıklı makaleyi inceleyin.