Firebase Dynamic Link не отправляет пользователя на сайт

В эти дни я запускаю новое приложение для Android, но его версия для iOS будет доступна в App Store через несколько месяцев. В приложении есть возможность пригласить друзей загрузить приложение через Firebase Invites.

Поэтому я создал динамическую ссылку с помощью консоли Firebase, которая должна работать следующим образом:

if ( IOS ) {
    // Go to app website
} else if ( ANDROID ) {
    if ( APP_INSTALLED ) {
        // Open app
    } else {
        // Open Google Play
    }
} else if ( DESKTOP ) {
    // Go to app website
}

Сама ссылка выглядит так (личная информация удалена):

     https://[custom_domain].app.goo.gl/?
     link=https://app_website.com&
     apn=com.my.app&st=meta+data_header&
     sd=meta+data+description&
     si=https://app_website.com/meta_data_image.png&
     utm_source=INVITE&
     efr=1

Приглашения Firebase реализованы следующим образом:

Uri deepLink = Uri.parse( getString( R.string.invitation_deep_link ) );
String invitationMessage = getString( R.string.invitation_message );
String emailTitle = String.format( getString( R.string.invitation_email_title ), getUserName() );

Intent intent = new AppInviteInvitation.IntentBuilder( getString( R.string.invitation_title ) )
    .setMessage ( invitationMessage )
    .setDeepLink( deepLink )
    .setEmailSubject( emailTitle )
    .setEmailHtmlContent( mRawEmailHtml )
    .setOtherPlatformsTargetApplication(
                    AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS,
                            getString( R.string.ios_app_client_id ) )
    .build();

startActivityForResult( intent, InviteActivity.REQUEST_INVITE );

На Android все работает нормально, но на iOS происходят какие-то странные вещи... вот варианты использования:

СМС

  1. Щелчок по полученной ссылке на устройстве Android, на котором уже установлено приложение -> Приложение открывается [отлично!]
  2. Щелчок по полученной ссылке на устройстве Android, на котором НЕ установлено приложение -> открывается Google Play [отлично!]
  3. Щелчок по полученной ссылке на iPhone, на котором НЕ установлено приложение -> браузер открывается с всплывающим окном JavaScript вверху и спрашивает:

Открыть эту страницу в «App Store»?

Нажатие «ОК» откроет App Store на странице «Элемент недоступен», а нажатие «Отмена» оставит пользователя на пустой странице браузера. [Совсем не так здорово!]

Электронная почта

  1. Щелчок по полученной ссылке на устройстве Android, на котором уже установлено приложение -> Приложение открывается [отлично!]
  2. Щелчок по полученной ссылке на устройстве Android, на котором НЕ установлено приложение -> открывается Google Play [отлично!]
  3. Нажав на полученную ссылку на iPhone, на котором НЕ установлено приложение -> браузер открывается с родным всплывающим окном iOS вверху и говорит:

Эта страница откроется в другом приложении.

Нажатие «ОК» откроет iTunes Store на странице «Элемент не найден», а нажатие «Отмена» оставит пользователя на пустой странице браузера. [Совсем не так здорово!]

Для меня это похоже на ошибку Google - я надеюсь, что ошибаюсь, и ошибка - это я. Кто-нибудь может пролить свет на эту тему?


person Barakuda    schedule 21.08.2017    source источник


Ответы (1)


Пара комментариев:

1) Всплывающее окно «Открыть эту страницу в «App Store»?» неизбежно на iOS. Это функция iOS, и этот диалог нельзя удалить. Функциональность этого диалога также не может быть изменена. Я не уверен насчет «Эта страница откроется в другом приложении». Это может быть специальный диалог электронной почты. Для начала попробуйте нажать на свою ссылку в приложении Notes для iOS.

2) Если вы не указали идентификатор пакета iOS и идентификатор AppStore, динамические ссылки Firebase не содержат информации о вашем приложении iOS. В этом случае ссылка должна вести на глубокую ссылку (https://app_website.com) при открытии на iOS. Я вижу в вашем коде, что вы назначаете ios_app_client_id. Зачем вы это делаете, если ваше приложение для iOS еще не доступно?

3) Чтобы проверить длинную или короткую ссылку, добавьте &d=1 к ссылке. Такая ссылка будет переходить на страницу отладки, где будут представлены подробности процесса навигации по ссылке.

Не стесняйтесь открывать ошибку Firebase, если проблемы не устранены.

person Oleksiy Ivanov    schedule 21.08.2017
comment
Большое спасибо Алексей. После выполнения некоторых тестов я пришел к выводу, что причиной странного поведения (диалоги и неправильное перенаправление) были приглашения Firebase, поскольку они изменяют мою динамическую ссылку и вызывают ее неправильную работу. К сожалению, я в конечном итоге удалил приглашения Firebase из своего проект и реализовать свой собственный пользовательский интерфейс приглашения и логику, стоящую за ним.. - person Barakuda; 24.08.2017