0

这些天我正在推出一个新的 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,单击“取消”将使用户进入空白浏览器页面。【一点都不厉害!】

对我来说,看起来谷歌有一个错误 - 我希望我错了,有这个错误的人就是我.. 任何人都可以对这个主题有所了解吗?

4

1 回答 1

0

情侣评论:

1) 弹出“在“App Store”中打开此页面?” 在 iOS 上是不可避免的。这是 iOS 功能,无法删除此对话框。此对话框的功能也无法更改。我不确定“此页面将在另一个应用程序中打开”。这可能是特定于电子邮件的对话框。作为基准,请尝试在 Notes iOS 应用程序中点击您的链接。

2) 如果您没有指定 iOS Bundle ID 和 AppStore ID,则 Firebase 动态链接没有关于您的 iOS 应用的信息。在这种情况下,链接在 iOS 上打开时应导航到深层链接 ( https://app_website.com )。我在您的代码中看到您分配了 ios_app_client_id。如果您的 iOS 应用程序尚不可用,为什么要这样做?

3) 要验证长链接或短链接,请附加&d=1到链接。这样的链接将导航到调试页面,其中链接导航流程的详细信息将被公开。

如果问题仍然存在,请随时打开 Firebase 错误。

于 2017-08-21T17:45:58.163 回答