【发布时间】:2021-08-14 14:15:34
【问题描述】:
我在应用中实现 Firebase 动态链接时遇到了一些问题。
我的应用程序包含一个书籍库,每本书下都有一个分享按钮。当用户单击该按钮时,它会创建一条消息,他可以发送其他用途,例如:“嘿,您可能喜欢这本书,请在此处查看!”
一旦用户单击图像,我希望它在该活动(称为 BookDetailActivity)处打开应用程序。如果用户拥有该应用程序,我希望它使用与该书相关的特定意图数据打开 BookDetailActivity(例如 bookid = abcde),如果用户没有该应用程序,则让他下载该应用程序。
为了做到这一点,我在我的清单中添加了 BookDetailActivity 下的以下代码:
<activity android:name=".BookDetailActivity">
<intent-filter android:label="SB">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="https://x.y.link"
android:pathPrefix="/SB"
android:scheme="https" />
</intent-filter>
</activity>
然后,在 BookDetailActivity 中,我添加了以下内容(用于检查应用程序是否在该活动中打开并查看我获得的链接)。
FirebaseDynamicLinks.getInstance()
.getDynamicLink( getIntent() )
.addOnSuccessListener( this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
Log.d( "TEST1", deepLink + "" );
}
}
} )
.addOnFailureListener( this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d( "TEST2", "HERE" );
}
} );
现在,发送邀请消息的按钮是:
ib_Share.setOnClickListener( v -> {
Intent shareIntent = new Intent();
shareIntent.setAction( Intent.ACTION_SEND );
String suggest = "Hey you might like this book, check it here! - https://x.y.link/SB?bookid=abcde";
shareIntent.putExtra( Intent.EXTRA_TEXT, Html.fromHtml( suggest ) );
shareIntent.setType( "text/html" );
startActivity( shareIntent );
} );
我得到的是我成功地将消息发送给另一个用户,用户单击该链接并且应用程序打开但在 MAIN ACTIVITY 而不是 BookDetail 活动。
是否有理由不将用户带到正确的活动?
它在我的 Firebase 控制台中的外观是(域(x.y.link 只是一个示例):
另外,如果用户在 BookDetailActivity 代码中没有 FirebaseDynamicLinks 部分的我的应用程序的早期版本,他们将如何设法获得这些邀请?它会打开他们下载应用程序还是什么都不做?
非常感谢
【问题讨论】:
标签: java android firebase firebase-dynamic-links