Невозможно получить 'deepLink.getQueryParameter ("...") "из общей динамической ссылки Firebase - PullRequest
0 голосов
/ 11 февраля 2019

Я разрабатываю динамическую ссылку, чтобы поделиться контентом страницы, чтобы открыть ее непосредственно в том же приложении с другого устройства.Когда я создаю общий ресурс динамической ссылки, я добавляю параметр запроса 'hotelId', но когда я нажимаю общую ссылку и пытаюсь открыть ссылку, приложение открывается нормально, но deepLink.getQueryParameter ("hotelId") всегда возвращает ноль.Вот мой код:

Genarate динамическая ссылка (DetailActivity)

onCreate(){
...

   DynamicLink dynamicLink = 
   FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse("www.example.com"))
            .setDynamicLinkDomain("example.page.link/hotelDetail?hotelId="+hotelId)
            // Open links with this app on Android
            .setAndroidParameters(new 
    DynamicLink.AndroidParameters.Builder().build())
            // Open links with com.example.ios on iOS
            .setIosParameters(new 
    DynamicLink.IosParameters.Builder("com.example.exampleDark").build())
            .buildDynamicLink();

    Uri dynamicLinkUri = dynamicLink.getUri();
    Log.e("DynamicLink -",dynamicLinkUri.toString());

   //Share Dynamic Link
   try {
        URL url = new URL(URLDecoder.decode(myDynamicLink.toString(), "UTF-8"));
        Log.i("Share Link", "URL = :"+url.toString());

        // [START ddl_share_link]
        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("text/plain");
        sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Firebase Deep Link");
        //String msg = "Hey, check this out: \n" + link;
        sendIntent.putExtra(Intent.EXTRA_TEXT, url.toString());

        startActivity(sendIntent);
        // [END ddl_share_link]

        } catch (Exception e) {
           e.printStackTrace();
           Log.i(TAG, "Could not decode Uri: " + e.getLocalizedMessage());
        }
 ...
 }

Обновление manifest.xml для получения динамической ссылки

    <activity
        android:name=".DetailActivity"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- [START link_intent_filter] -->

        <!-- handle website links -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:host="example.page.link" android:scheme="http"/>
            <data android:host="example.page.link" android:scheme="https"/>
        </intent-filter>
        <!-- [END link_intent_filter] -->
    </activity>

Чтобы получить динамическую ссылку из общего URL-адреса(DetailActivity)

FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new 
    OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        String path = deepLink.getPath();

                        //if(path.equals("/hotelDetail")){
                        String hId = deepLink.getQueryParameter("hotelId");

                        Log.i("Get Parameters", " Hotel = :" + hId + " Offer = :");

                    } else {
                        Log.i("Get Parameters", "No Hotel Link");
                    }

                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.i("Get Parameters", "getDynamicLink:onFailure", e);
                }
            });

Значения, определенные на моей консоли Firebase

URL Link - https://example.page.link/hotelDetail
Dynamic Link - https://example.page.link/hotelDetail?hotelId 

После того, как я поделился контентом, я получаю ссылку ниже как динамическую ссылку (Общая ссылка)

 https://example.page.link/hotelDetail?hotelId=6q7a99a78d7fb63f330g2w6d?apn=myapp.com.myapp&ibi=com.example.exampleDark&link=www.example.com

Что я хочу, так это то, что когда я нажимаю общую ссылку, я хочу получить значение hotelId для DetailActivity из общей ссылки.

Кто-нибудь может мне помочь, если мне не хватает?Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...