Firebase Dynamic Link ShortUrl не работает в Android

Я не могу создать ShortDynamicLink с помощью Android Firebase Invite SDK. Я могу создать длинную динамическую ссылку в порядке, но она продолжает не создавать ссылку ShortDynamic, всегда выдает сообщение об ошибке Bad Request. Вот код:

private void sendInvite(String uid, final String displayName){

        String link = "https://appdomain.com/?invitedby=" + uid;



        com.google.android.gms.tasks.Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))
                .setDynamicLinkDomain(Constants.DYNAMIC_LINK_DOMAIN)
                .buildShortDynamicLink()
                .addOnCompleteListener(mActivity, new OnCompleteListener<ShortDynamicLink>() {
                    @Override
                    public void onComplete(@NonNull com.google.android.gms.tasks.Task<ShortDynamicLink> task) {
                        if (task.isSuccessful()){
                            Uri shortLink = task.getResult().getShortLink();

                            // String referrerName = SettingsHelper.getHelper(mActivity).getDisplayName();
                            String subject = String.format("%s wants you to try Awesome App!", displayName);
                            String invitationLink = shortLink.toString();
                            String msg = "Enjoy and share your moments with Awesome App! Use my referrer link: "
                                    + invitationLink;
                            String msgHtml = String.format("<p>Start having fun with Awesome App's! Use my "
                                    + "<a href=\"%s\">referrer link</a>!</p>", invitationLink);

                            Intent intent = new Intent(Intent.ACTION_SENDTO);
                            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                            intent.putExtra(Intent.EXTRA_TEXT, msg);
                            intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
                            if (intent.resolveActivity(getPackageManager()) != null) {
                                startActivity(intent);
                            }
                        }else {
                            String errorMessage = task.getException().getMessage();
                            Log.d(TAG, "Error creating Dynamic link " + errorMessage);
                        }

                    }
                });

}

API динамической ссылки Firebase включен в консоли Google, как показано на снимке экрана ниже:  введите описание изображения здесь

Я могу создать короткую динамическую ссылку с консоли, но я хотел иметь возможность создавать ее программно с клиента. Я использую текущую версию Android SDK версии 11.22.1.


person Val Okafor    schedule 11.09.2017    source источник


Ответы (2)


Пара идей для проверки:

1) Убедитесь, что Constants.DYNAMIC_LINK_DOMAIN соответствует домену в вашем проекте Firebase. Убедитесь, что приложение, в котором вы создаете ссылку, является частью этого проекта Firebase. Убедитесь, что в приложении есть актуальный GoogleServices.plist (или json).

2) Поделитесь длинной ссылкой, которую вам не удается сократить. Для длинной ссылки добавьте & d = 1 в конец ссылки и перейдите по такой ссылке в браузере. Убедитесь, что на этой странице отладки нет ошибок и соответствующих предупреждений.

Не стесняйтесь сообщать об ошибке Firebase или писать мне на адрес oleksiyi на google.com, если это не помогло.

person Oleksiy Ivanov    schedule 11.09.2017
comment
Спасибо за указатель, проблема в том, что в домене приложения была косая черта в конце. - person Val Okafor; 12.09.2017
comment
Это хорошо знать. В GMS Core v14 появятся обновления FDL для Android, которые будут содержать более подробные сообщения об ошибках для таких случаев. - person Oleksiy Ivanov; 13.09.2017

Я бы предложил сначала создать длинную ссылку, а затем ссылку сортировки, в два шага, как в следующем вопросе Невозможно создать короткую динамическую ссылку Firebase -› Ошибка динамической ссылки 7: Запрещено

person Pablo A. Martínez    schedule 12.09.2017
comment
Это устранило у меня проблему с генерацией коротких ссылок, которая началась после того, как я изменил имя своего пакета и добавил новое приложение в свой проект firebase. - person ericgithinji; 20.05.2020