2

我设置了 Firebase App Invite,选择联系人后,它会显示一个小吃栏,上面写着:

Your invitation has been sent

在 onActivityResult 中,它返回给我一个 RESULT_OK,但是当我通过

String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
Logger.INSTANCE.LogD(TAG, "onActivityResult: ids.size = " + ids.length );

它说 ids.length == 0。

为什么它不能返回 ids 但返回 RESULT_OK?

有时我可以收到短信邀请,但我永远不会收到电子邮件邀请。

这是我的毕业生:

compile 'com.google.firebase:firebase-invites:9.6.1'
apply plugin: 'com.google.gms.google-services'
classpath 'com.google.gms:google-services:3.0.0'

应用邀请功能:

Intent i = new AppInviteInvitation.IntentBuilder(getString(R.string.share_title))
                .setMessage(getString(R.string.share_content))
                .setEmailHtmlContent(
                        "<html>\n" +
                        "<body>\n" +
                        "\t<a href=\""+getString(R.string.share_link)+"\">Download</a>\n"+
                        "</body>\n" +
                        "</html>")
                .setEmailSubject(getString(R.string.share_title))
                .build();
        startActivityForResult(i, REQUEST_INVITE);

有人知道为什么我收不到电子邮件邀请吗?而且我的短信邀请也不稳定。

4

2 回答 2

2

问题是,由于某种原因,当emailHtmlContent不包含有效的 html 时,Firebase 只是静默失败。恕我直言,它应该在创建意图时验证这一点,如果不正确则抛出异常。

很难准确地说出您的 html 中有什么问题,使用转义的双引号很难阅读。我宁愿描述我的解决方案:

将 html 放入资源文件中,如下所示:(注意 CDATA 允许您将 html 放入 xml 文件中而无需转义):

<resources>
    ...
    <string name="invitation_email_html_content"><![CDATA[<!DOCTYPE html>
<html>
    <body>
        <div>
            <a href="%%APPINVITE_LINK_PLACEHOLDER%%">Install My App</a>
        </div>
    </body>
</html>]]></string>
</resources>

您可以这样构建意图:

            Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
                    .setEmailSubject(getString(R.string.invitation_email_subject))
                    .setMessage(message)
                    .setEmailHtmlContent(getString(R.string.invitation_email_html_content))
                    .build();
            startActivityForResult(intent, REQUEST_INVITE);

我还认为最好让firebase为您生成链接(就像我所做的那样,将 %%APPINVITE_LINK_PLACEHOLDER%% 放在您的html中),它是更便携的解决方案:在这种情况下,它会在单击时触发标准行为:安装应用程序如果尚未安装,或者如果已安装则启动 MainActivity。但这可能无法满足您的特定需求。

于 2016-11-23T13:48:42.563 回答
0

就我而言,我已删除.setOtherPlatformsTargetApplication(...)并再次发送电子邮件。当未安装应用程序时,它会弄乱其他平台上的链接。

于 2018-03-10T07:49:18.307 回答