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 के लिए)

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 ऐप्लिकेशन में सबसे नीचे मौजूद बार में बाईं ओर, 'वापस जाएं' बटन, ऐप्लिकेशन का नाम, और डेटा शेयर करने का आइकॉन दिखाया गया है. दाईं ओर, ब्रैंड के लोगो वाला 'वापस जाएं' बटन मौजूद है.

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 कोड में, एक सैंपल फ़ंक्शन दिखाया गया है. यह फ़ंक्शन, ज़रूरी पैरामीटर के साथ Navigation Connect सेशन लॉन्च करता है.

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