В эти дни я запускаю новое приложение для 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 происходят какие-то странные вещи... вот варианты использования:
СМС
- Щелчок по полученной ссылке на устройстве Android, на котором уже установлено приложение -> Приложение открывается [отлично!]
- Щелчок по полученной ссылке на устройстве Android, на котором НЕ установлено приложение -> открывается Google Play [отлично!]
- Щелчок по полученной ссылке на iPhone, на котором НЕ установлено приложение -> браузер открывается с всплывающим окном JavaScript вверху и спрашивает:
Открыть эту страницу в «App Store»?
Нажатие «ОК» откроет App Store на странице «Элемент недоступен», а нажатие «Отмена» оставит пользователя на пустой странице браузера. [Совсем не так здорово!]
Электронная почта
- Щелчок по полученной ссылке на устройстве Android, на котором уже установлено приложение -> Приложение открывается [отлично!]
- Щелчок по полученной ссылке на устройстве Android, на котором НЕ установлено приложение -> открывается Google Play [отлично!]
- Нажав на полученную ссылку на iPhone, на котором НЕ установлено приложение -> браузер открывается с родным всплывающим окном iOS вверху и говорит:
Эта страница откроется в другом приложении.
Нажатие «ОК» откроет iTunes Store на странице «Элемент не найден», а нажатие «Отмена» оставит пользователя на пустой странице браузера. [Совсем не так здорово!]
Для меня это похоже на ошибку Google - я надеюсь, что ошибаюсь, и ошибка - это я. Кто-нибудь может пролить свет на эту тему?