नेविगेशन सेशन शुरू करने के लिए, आपके ऐप्लिकेशन को Google Maps या Waze खोलने के लिए, लॉन्च यूआरएल को डाइनैमिक तरीके से बनाना होगा. इस गाइड में बताया गया है कि यात्रा बनाएं से मिले पुष्टि किए गए ट्रिप टोकन का इस्तेमाल करके, Google Maps या Waze को कैसे लॉन्च करें. साथ ही, अपने ऐप्लिकेशन पर वापस जाने की सुविधा को कैसे कॉन्फ़िगर करें.
Google Maps या Waze लॉन्च करने का तरीका
Google Maps या Waze लॉन्च करने के लिए, आपको ऐसा तरीका उपलब्ध कराना होगा जिससे ड्राइवर आपके ऐप्लिकेशन से नेविगेशन सेशन शुरू कर सकें. साथ ही, आपको ज़रूरी पैरामीटर के साथ लॉन्च यूआरएल बनाना होगा और सेशन का श्रेय देने के लिए, अपना ऐप्लिकेशन आईडी देना होगा.
ड्राइवरों को आपके ऐप्लिकेशन से नेविगेशन शुरू करने की सुविधा देना
आपको ड्राइवर को अपने ऐप्लिकेशन से नेविगेशन शुरू करने का विकल्प देना चाहिए. अगर आपने ड्राइवर को बटन का इस्तेमाल करके Google Maps या Waze लॉन्च करने की सुविधा दी है, तो पक्का करें कि एट्रिब्यूशन सही तरीके से किया गया हो. साथ ही, बटन पर साफ़ तौर पर लेबल लगाकर, भ्रम की स्थिति से बचें. उदाहरण के लिए, बटन पर या उसके आस-पास "Google Maps" या "Waze" टेक्स्ट रखें.
लॉन्च यूआरएल बनाना
नेविगेशन सेशन शुरू करने के लिए, Navigation Connect लॉन्च करने का यूआरएल बनाएं. यह यूआरएल एक स्ट्रिंग है. इसमें डेस्टिनेशन, ट्रिप टोकन, और नेविगेशन के लिए ज़रूरी पैरामीटर शामिल होते हैं. यह स्टैंडर्ड Google Maps यूआरएल या Waze डीप लिंक की तरह काम करता है.
ड्राइवर के डिवाइस पर Google Maps या Waze लॉन्च करने के लिए, प्लैटफ़ॉर्म के हिसाब से मैकेनिज़्म का इस्तेमाल करें:
- Android: यूआरएल स्ट्रिंग को
Intentमें पास करें. - iOS: यूआरएल स्ट्रिंग को यूनिवर्सल लिंक (या डीप लिंक) के तौर पर इस्तेमाल करें.
डेस्टिनेशन को फ़ॉर्मैट करना
यह पक्का करने के लिए कि Google Maps या Waze, रास्ते का हिसाब सही तरीके से लगा सकें, अपनी मंज़िल को फ़ॉर्मैट करते समय इन नियमों का पालन करें:
सिर्फ़ एक ऐसी जगह की जानकारी दें जहां पहुंचा जा सकता हो. मंज़िल की जानकारी को पते के तौर पर, अक्षांश/देशांतर निर्देशांकों के तौर पर या जगह के आईडी के तौर पर पास किया जा सकता है.
एक से ज़्यादा वेपॉइंट का इस्तेमाल न करें. अगर यूआरएल में एक से ज़्यादा वेपॉइंट सीधे तौर पर पास किए जाते हैं, तो Google Maps या Waze पर गड़बड़ी का मैसेज दिखता है. इसके बजाय, अलग-अलग यात्राएं बनाएं.
यात्रा का टोकन और नेविगेशन पैरामीटर जोड़ना
लॉन्च यूआरएल को पूरा करने के लिए, आपको पुष्टि किया गया ट्रिप टोकन शामिल करना होगा. यह टोकन आपको ट्रिप बनाएं अनुरोध से मिला था. आपको नेविगेशन के ऐसे पैरामीटर भी शामिल करने होंगे जिनसे Google Maps या Waze को नेविगेशन की सुविधा चालू करने का निर्देश मिलता हो.
Google Maps
Google Maps के लिए, लॉन्च यूआरएल में ये पैरामीटर शामिल करें:
dir_action=navigate: इस पैरामीटर से, ऐक्टिव नेविगेशन चालू हो जाता है.action_token: यह पैरामीटर, पुष्टि किए गए यात्रा टोकन की जानकारी देता है.
यहां दिए गए उदाहरणों में, Google Maps के लिए लॉन्च यूआरएल को अलग-अलग डेस्टिनेशन फ़ॉर्मैट का इस्तेमाल करके फ़ॉर्मैट करने का तरीका बताया गया है:
-
अक्षांश/देशांतर के कोऑर्डिनेट:
https://www.google.com/maps/dir/?api=1&destination=-33.8569%2C151.2152&dir_action=navigate&action_token=TRIP_TOKEN
-
पते की स्ट्रिंग:
https://www.google.com/maps/dir/?api=1&destination=1600%20Amphitheatre%20Parkway...&dir_action=navigate&action_token=TRIP_TOKEN
-
जगह का आईडी:
https://www.google.com/maps/dir/?api=1&destination_place_id=PLACE_ID&dir_action=navigate&action_token=TRIP_TOKEN
Waze
Waze के लिए, लॉन्च यूआरएल में ये पैरामीटर शामिल करें:
navigate=yes: यह पैरामीटर, ऐक्टिव नेविगेशन को चालू करता है.external_trip_token: यह पैरामीटर, पुष्टि किया गया यात्रा टोकन उपलब्ध कराता है.
यहां दिए गए उदाहरणों में, अलग-अलग डेस्टिनेशन फ़ॉर्मैट का इस्तेमाल करके, Waze के लिए लॉन्च यूआरएल को फ़ॉर्मैट करने का तरीका बताया गया है:
-
अक्षांश/देशांतर के कोऑर्डिनेट:
https://waze.com/ul?ll=-33.8569%2C151.2152&navigate=yes&external_trip_token=TRIP_TOKEN
-
पते की स्ट्रिंग:
https://waze.com/ul?&q=1600%20Amphitheatre...&navigate=yes&external_trip_token=TRIP_TOKEN
-
जगह का आईडी:
https://waze.com/ul?google_place_id=PLACE_ID&navigate=yes&external_trip_token=TRIP_TOKEN
अपना ऐप्लिकेशन आईडी सबमिट करें (सिर्फ़ Android के लिए)
Android पर नेविगेशन सेशन को अपने ऐप्लिकेशन से जोड़ने के लिए, पुष्टि किया गया ऐप्लिकेशन आईडी दें. इससे आपके ऐप्लिकेशन की पहचान यात्रा के सोर्स के तौर पर होती है, ताकि Google Maps या Waze, चालू यात्रा को आपके प्लैटफ़ॉर्म से लिंक कर सकें.
ऐप्लिकेशन आईडी देने से, ये सुविधाएं चालू हो जाती हैं:
- डेटा शेयर करने की अनुमति दें: इससे यह पुष्टि होती है कि आपके ऐप्लिकेशन को, यात्रा का डेटा पाने की अनुमति है.
- ड्राइवर की सहमति लें: इससे सहमति वाली स्क्रीन पर आपके कारोबार का नाम और निजता नीति दिखती है. इससे यह पक्का होता है कि ड्राइवर को पता है कि उसकी रीयल-टाइम लोकेशन और पहुंचने का अनुमानित समय (ईटीए) की जानकारी कौन पा रहा है.
- 'वापस जाएं' बटन चालू करें: इससे Google Maps या Waze को ब्रैंड किया गया 'वापस जाएं' बटन बनाने की अनुमति मिलती है, ताकि ड्राइवर आपके ऐप्लिकेशन पर वापस जा सकें.
Android पर Google Maps या Waze को ऐप्लिकेशन आईडी भेजने के लिए, लॉन्च इंटेंट (जिसमें लॉन्च यूआरएल स्ट्रिंग होती है) में अपना पैकेज का नाम जोड़ें. इसके लिए, Intent.EXTRA_REFERRER_NAME का इस्तेमाल करें.
यहां दिए गए उदाहरण में, इंटेंट में पैकेज का नाम जोड़ने का तरीका बताया गया है:
intent.putExtra(Intent.EXTRA_REFERRER_NAME, "android-app://${application.packageName}")
ड्राइवरों को आपके ऐप्लिकेशन पर वापस लाने का तरीका
Navigation Connect, नीचे की ओर एक बॉटम बार (Google Maps) या ब्रैंड किया गया 'वापस जाएं' बटन (Waze) दिखाता है, ताकि ड्राइवर यात्रा के दौरान या मंज़िल पर पहुंचने के बाद, किसी भी समय आपके ऐप्लिकेशन पर आसानी से वापस जा सके.
Android
आपको एक PendingIntent बनाना होगा, जो आपके ऐप्लिकेशन में की गई गतिविधि की ओर ले जाता हो. इस PendingIntent को लॉन्च इंटेंट में, अतिरिक्त के तौर पर अटैच करें. इसके लिए, सटीक कुंजी "pendingIntent" का इस्तेमाल करें. जब उपयोगकर्ता 'वापस जाएं' बटन पर टैप करता है, तब Google Maps या Waze इस इंटेंट को पूरा करता है, ताकि आपके ऐप्लिकेशन को फ़ोरग्राउंड में लाया जा सके.
intent.putExtra("pendingIntent", getPendingIntent())iOS (सिर्फ़ Waze)
'वापस जाएं' बटन चालू करने के लिए, आपको लॉन्च यूआरएल में कुछ भी जोड़ने की ज़रूरत नहीं है. Waze, उस यूनिवर्सल लिंक का इस्तेमाल अपने-आप करता है जिसे आपने अपने ऐप्लिकेशन की पुष्टि करते समय रजिस्टर किया था.
कोड सैंपल
यहां दिए गए कोड सैंपल में, Navigation Connect का इस्तेमाल करके अपने ऐप्लिकेशन से Google Maps या Waze लॉन्च करने और "ऐप्लिकेशन पर वापस जाएं" बटन चालू करने का तरीका बताया गया है.
Google Maps (Android)
यहां दिए गए Kotlin कोड में, एक सैंपल फ़ंक्शन दिखाया गया है. यह ज़रूरी पैरामीटर के साथ, Navigation Connect सेशन लॉन्च करता है.
private val destinationAddress = "1600 Amphitheatre Parkway, Mountain View, CA 94043"
private fun launchNavConnect() {
val jwtToken = "TRIP_TOKEN"
try {
// URL Encode the destination
val encodedDestination = URLEncoder.encode(destinationAddress, "UTF-8")
val navConnectUrl = "https://www.google.com/maps/dir/?api=1" +
"&destination=$encodedDestination" +
"&dir_action=navigate" +
"&action_token=$jwtToken"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(navConnectUrl))
// Explicitly set GMM package to ensure it opens in Google Maps
intent.setPackage("com.google.android.apps.maps")
// Add your application ID to the intent
intent.putExtra(Intent.EXTRA_REFERRER_NAME, "android-app://${application.packageName}")
// set up the NavConnect back button
intent.putExtra("pendingIntent", getPendingIntent())
startActivity(intent)
} catch (e: Exception) {
// handle errors
}
}
private fun getPendingIntent(): PendingIntent? {
val returnIntent = Intent(application, MainActivity::class.java) // replace with your activity to launch
returnIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
val flags = PendingIntent.FLAG_IMMUTABLE
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
return PendingIntent.getActivity(application, 0, returnIntent, flags)
}
val options =
ActivityOptions.makeBasic()
.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
)
return PendingIntent.getActivity(application, 0, returnIntent, flags, options.toBundle())
}Waze (Android)
यहां दिए गए Kotlin कोड में, एक सैंपल फ़ंक्शन दिखाया गया है. यह ज़रूरी पैरामीटर के साथ, Navigation Connect सेशन लॉन्च करता है.
private val destinationAddress = "1600 Amphitheatre Parkway, Mountain View, CA 94043"
private fun launchNavConnect() {
val tripToken = "TRIP_TOKEN"
try {
// URL Encode the destination
val encodedDestination = URLEncoder.encode(destinationAddress, "UTF-8")
val navConnectUrl = "https://waze.com/ul?" +
"&q=$encodedDestination" +
"&navigate=yes" +
"&external_trip_token=$tripToken"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(navConnectUrl))
// Explicitly set package name to ensure it opens in Waze
intent.setPackage("com.waze")
// Add your application ID to the intent
val referrerName = "android-app://${application.packageName}"
intent.putExtra(Intent.EXTRA_REFERRER_NAME, referrerName)
// set up the NavConnect back button
intent.putExtra("pendingIntent", getPendingIntent())
startActivity(intent)
} catch (e: Exception) {
// handle errors
}
}
private fun getPendingIntent(): PendingIntent? {
val returnIntent = Intent(application, MainActivity::class.java) // replace with your activity to launch
returnIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
val flags = PendingIntent.FLAG_IMMUTABLE
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
return PendingIntent.getActivity(application, 0, returnIntent, flags)
}
val options =
ActivityOptions.makeBasic()
.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
)
return PendingIntent.getActivity(application, 0, returnIntent, flags, options.toBundle())
}Waze (iOS)
यहां दिए गए Swift कोड में, एक सैंपल फ़ंक्शन दिखाया गया है. यह ज़रूरी पैरामीटर के साथ, नेविगेशन कनेक्ट सेशन लॉन्च करता है.
openWazeUrl(queryItems: [URLQueryItem(name: "q", value: "1600 Amphitheatre Parkway")])
private func openWazeUrl(queryItems: [URLQueryItem]) {
var components = URLComponents()
components.scheme = "https"
components.host = "waze.com"
components.path = "/ul"
// Create a mutable copy of the queryItems.
var mutableQueryItems = queryItems
// Add Trip Token
guard let tokenText = tokenField.text, !tokenText.isEmpty else {
return
}
let token = URLQueryItem(name: "external_trip_token", value: tokenText)
mutableQueryItems.append(token)
// Add compulsory params
mutableQueryItems.append(URLQueryItem(name: "navigate", value: "yes"))
// Construct and Launch URL
components.queryItems = mutableQueryItems
guard let url = components.url else {
return
}
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}