Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Dynamic Link Cannot shorten a short Dynamic Link

Tags:

android

I referred many questions in site ,but I can't still getting trouble to generate short dynamic link using Firebase Dynamic Links.

I am trying to generate short dynamic link from a dynamic link. After generating dynamic link its work perfectly and shareable to any other apps. But can't generating short link from that dynamic link.

Its shows error like this in logcat :

com.google.android.gms.common.api.ApiException: 400: Cannot shorten a short Dynamic Link: https://onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st=One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201

I am creating dynamic link using code:

private void createShareUri(String pid) {
    Uri.Builder builder = new Uri.Builder();
    builder.scheme("https")
            .authority("api.wastickerapp.co")
            .appendQueryParameter("packid", pid);

    DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setDomainUriPrefix("https://onestickers.page.link/Stickers")
            .setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
                    .setMinimumVersion(11)
                    .build())
            .setSocialMetaTagParameters(
                    new DynamicLink.SocialMetaTagParameters.Builder()
                            .setTitle("One Stickers")
                            .setDescription("Stickers for WhatsApp - WAStickerApps")
                            .setImageUrl(Uri.parse("https://onestickers.com/img/main-logo.png"))
                            .build())
            .setLink(builder.build())
            .buildDynamicLink();
}

This will be generate dynamic link successfully: https://onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st=One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201

And also its working if I will send this link to any apps via Intent!

But after that I am trying to generate short link:

private void createShortDynamicLink(Uri uri) {
    FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setLongLink(uri)
            .buildShortDynamicLink()
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    Uri shortLink = Objects.requireNonNull(task.getResult()).getShortLink();
                    //Uri flowchartLink = task.getResult().getPreviewLink();
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.putExtra(Intent.EXTRA_SUBJECT, "Stickers Link");
                    intent.putExtra(Intent.EXTRA_TEXT, shortLink.toString());
                    startActivity(intent);
                }
            }).addOnFailureListener(mContext, e -> Log.e("DynamicLink>>>", Log.getStackTraceString(e)));
}

And then Its shows logcat!:

E/DynamicLink>>>: com.google.android.gms.common.api.ApiException: 400: Cannot shorten a short Dynamic Link: https://onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st=One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201 [https://firebase.google.com/docs/dynamic-links/rest#create_a_short_link_from_parameters]
    at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(Unknown Source:6)
    at com.google.firebase.dynamiclinks.internal.zzi.zza(Unknown Source:4)
    at com.google.firebase.dynamiclinks.internal.zzn.dispatchTransaction(Unknown Source:10)
    at com.google.android.gms.internal.firebase_dynamic_links.zzb.onTransact(Unknown Source:12)
    at android.os.Binder.execTransact(Binder.java:697)

Please give suggestion if there is any other techniques in android.

like image 785
Jayesh Rathod Avatar asked Sep 05 '25 20:09

Jayesh Rathod


1 Answers

try using the original url https://app.page.link/ instead of https://app.page.link/ChosenName

in your case it'll be: setDomainUriPrefix("https://onestickers.page.link/") instead of setDomainUriPrefix("https://onestickers.page.link/Stickers")

like image 121
Sezi Mik Avatar answered Sep 08 '25 09:09

Sezi Mik