Google Maps या Waze लॉन्च करें

नेविगेशन सेशन शुरू करने के लिए, आपके ऐप्लिकेशन को 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 के लिए)

Navigation Connect का इस्तेमाल करके यात्रा शुरू करने के लिए, आपको 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}")

ड्राइवरों को आपके ऐप्लिकेशन पर वापस लाने का तरीका

Google Maps ऐप्लिकेशन की इमेज. इसमें सबसे नीचे मौजूद बॉटम बार में बाईं ओर, 'वापस जाएं' बटन, ऐप्लिकेशन का नाम, और डेटा शेयर करने का आइकॉन दिखाया गया है. दाईं ओर, ब्रैंड किए गए 'वापस जाएं' बटन के साथ Waze ऐप्लिकेशन दिखाया गया है.

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)
        }
       }