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. Bunun bir örneği, özellikle tehlikeli maddeler taşıyorlarsa kamyon sürücüleridir. Kısa mesafelerde yürümek gibi farklı yöntemlerle teslimat yapan diğer şirketler de adım adım navigasyonun etkinleştirilmesini gerektirmeyebilir. Bu da cihazın pil ömrünü uzatır.
Kapsam
Bu belgede, şirketlerin Navigasyon SDK'sından navigasyon haritasını (görünüm) nasıl gizleyebileceği ve konum takibi, etkinlik abonelikleri ve geri çağırmalarla ilgili olarak Navigasyon SDK'sının tüm özelliklerinden nasıl yararlanabileceği açıklanmaktadır. Başsız 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 şu işlevlerden sorumludur:
- Uygulamayı çalıştıran cihazdan yola oturtulmuş konumlar elde etme. Yola sabitlenmiş 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ç duydukları 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'yı 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. Bu durumda, NavigationView yerine SupportNavigationFragment oluşturuluyor.
Nav SDK'nın gözetimsiz modda başlamasını sağlamak için bu iki talimatı kaldırmamız yeterlidir. Amaç, gözetimsiz ve gözetimsiz olmayan (etkin gezinme) arasında geçiş yapmaksa gözetimsizin 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 gözetimsiz modu etkinleştirecek veya devre dışı bırakacak bir kullanıcı arayüzü bileşenine (ör. açma/kapatma düğmesi) bağlanabilir.
|
|
| Etkin gezinme ile çalışan Nav SDK'sı (başsız kapalı) | Aynı uygulama, ancak artık Nav SDK'sı başsız modda çalışıyor |
Yukarıdaki sağ örnekte 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 ilk kullanıma hazırlama işlemi sırasında aşağıdaki ayarı ekleyerek gözetimsiz 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 ve ekran görüntüsü yalnızca mapView'i gizlemenin 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.