这些天我正在推出一个新的 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,单击“取消”将使用户进入空白浏览器页面。【一点都不厉害!】
对我来说,看起来谷歌有一个错误 - 我希望我错了,有这个错误的人就是我.. 任何人都可以对这个主题有所了解吗?