简体   繁体   English

Firebase 动态链接无法缩短短动态链接

[英]Firebase Dynamic Link Cannot shorten a short Dynamic Link

I referred many questions in site ,but I can't still getting trouble to generate short dynamic link using Firebase Dynamic Links.我在网站上提到了很多问题,但我仍然无法使用 Firebase 动态链接生成短动态链接。

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 :它在 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这将成功生成动态链接: 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!如果我将此链接通过 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!:然后它显示 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.如果android中还有其他技术,请提出建议。

Create short link also when you create long link like this当您像这样创建长链接时也创建短链接

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

FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(builder.build())
            .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())
            .buildShortDynamicLink()

try using the original url https://app.page.link/ instead of https://app.page.link/ChosenName尝试使用原始网址https://app.page.link/而不是https://app.page.link/ChosenName

in your case it'll be: setDomainUriPrefix("https://onestickers.page.link/") instead of setDomainUriPrefix("https://onestickers.page.link/Stickers")在您的情况下,它将是: setDomainUriPrefix("https://onestickers.page.link/") 而不是 setDomainUriPrefix("https://onestickers.page.link/Stickers")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM