Firebase Dynamic Link с параметрами - PullRequest
0 голосов
/ 18 июня 2019

Я новичок в сообществе, и я присоединился к нему из-за необходимости выделить проблему, которую мне не удалось решить. Заранее благодарю за любой ответ, который вы можете дать мне, чтобы помочь мне.

В настоящее время я занимаюсь разработкой проекта в Android Studio и использую базу данных Firebase. У меня возникла необходимость поделиться продуктом, публикацией или списком, которые есть в моем приложении. Из-за этого я решил использовать Firebase Dynamic Link, чтобы поделиться каким-то конкретным объектом.

Мой текущий код пытается создать ссылку и поделиться ею, я хотел бы знать, что я делаю неправильно, поскольку она создает ссылку и позволяет мне поделиться ею, но она не получает параметр, который я передаю. В моем случае «Крышка» - это параметр, который я хочу передать по ссылке, и, нажимая на ссылку, просто принимайте участие, где хранится «Крышка».

 holder.BtnShare.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            generateDeepLinkUrl(postCurrent.getLid());

           String url="https://palsuper.page.link/lista_compartida";
            FirebaseDynamicLinks.getInstance().createDynamicLink()
                    .setLink( Uri.parse(url))
                    .setDomainUriPrefix("https://palsuper.page.link")
                    .setAndroidParameters(
                            new DynamicLink.AndroidParameters.Builder("com.ibrahim.palsuper")
                                    .setMinimumVersion(1)
                                    .build())
                    .buildShortDynamicLink( ShortDynamicLink.Suffix.SHORT).addOnCompleteListener( new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {

                    if (task.isSuccessful()) {
                        Uri shortURL = task.getResult().getShortLink();
                        shareDeepLink(shortURL.toString());
                    } else {
                        Toast.makeText(mContext, "error", Toast.LENGTH_SHORT).show();
                    }
                }
            });

            shareDeepLink( url );
        }
    } );


}

private String generateDeepLinkUrl(String Lid) {
    return "https://palsuper.com/lista_compartida=" + Lid ;
}

private void shareDeepLink(String url) {

    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "Hey! check this content out  " + url);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check this out !");
    mContext.startActivity(Intent.createChooser(shareIntent, "Share this cool content"));

}

GetLink.

private void getDynamicLink() {
    FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    // Get deep link from result (may be null if no link is found)
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        Toast.makeText(HomeActivity.this, "Link obtenido del intent " + deepLink, Toast.LENGTH_SHORT).show();

                       // Log.d(TAG, "Link obtenido del intent " + deepLink.getPath());

                        getAndParseSharedData(deepLink.getPath());


                    }


                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                   // Log.w(TAG, "getDynamicLink:onFailure", e);
                }
            });
}

private void getAndParseSharedData(String url) {

    String pushKey = "";
    if (url.contains("_")) {
        String[] parts = url.split("=");
        pushKey = parts[1];
       // Log.d(TAG, "getAndParseSharedData: " + pushKey);
        Toast.makeText(HomeActivity.this, pushKey, Toast.LENGTH_SHORT).show();
    }

    }

}

1 Ответ

0 голосов
/ 25 июня 2019

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

Like this:
"https://palsuper.com?lista_compartida=" + Lid;
                        or
"https://palsuper.com/lista_compartida?lista_compartida=" + Lid;

And then you can fetch it simply using this firebase provided method:

Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        String lista_compartida = deepLink.getQueryParameter("lista_compartida");

}

Надеюсь, этот ответ поможет.

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