【问题标题】:Firebase Dynamic Link doesn't send user to websiteFirebase 动态链接不会将用户发送到网站
【发布时间】:2017-08-21 15:03:13
【问题描述】:

这几天我正在推出一款新的 Android 应用,但它的 iOS 版本将在几个月后在 App Store 上架。在应用中,您可以选择通过 Firebase 邀请邀请朋友下载应用。

所以我使用 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,单击“取消”将使用户进入空白浏览器页面。 [一点都不好!]

对我来说,谷歌似乎有一个错误 - 我希望我错了,有这个错误的人就是我。任何人都可以阐明这个问题吗?

【问题讨论】:

    标签: android iphone firebase firebase-dynamic-links firebase-invites


    【解决方案1】:

    几个cmets:

    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 错误。

    【讨论】:

    • 非常感谢 Oleksiy。在运行了一些测试之后,我了解到奇怪行为(对话框和错误重定向)的原因是 Firebase 邀请,因为它改变了我的动态链接并导致它无法正常运行。所以很遗憾,我最终从我的项目并实现我自己的自定义邀请 UI 及其背后的逻辑..
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 2018-05-28
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多