如何同时处理 Firebase DynamicLink 和普通的 DeepLink?
How to handle both Firebase DynamicLink and plain DeepLink at the same time?
我对 google 文档感到困惑,因为它同时处理普通深度链接和 firebase 动态链接。
为了处理普通的深层链接,我有这个:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
parseDeepLink(data);
}
要添加对 firebase 动态链接(和 firebase 应用程序邀请)的支持,文档建议使用这个:
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
if (pendingDynamicLinkData != null) {
Uri deepLink = pendingDynamicLinkData.getLink();
// Extract invite
FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if (invite != null) {
String invitationId = invite.getInvitationId();
// handle invite
}
parseDeepLink(deepLink);
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
finish();
}
});
但是,使用上面更新的代码,我无法接收普通的 deepLinks,因为 pendingDynamicLinkData 对于普通的 deepLinks 总是 null。我应该在 onFailure()
方法中使用 parseDeepLink(getIntent().getData())
吗?
处理普通深度链接和 Firebase 动态链接的正确方法是什么?
对于非动态链接,您应该只使用
Uri data = intent.getData();
和以前一样。您可以在成功回调中检查,例如
if (pendingDynamicLinkData != null) {
Uri deepLink = pendingDynamicLinkData.getLink();
// Extract invite
FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if (invite != null) {
String invitationId = invite.getInvitationId();
// handle invite
}
parseDeepLink(deepLink);
} else {
Uri data = intent.getData();
parseDeepLink(data);
}
我对 google 文档感到困惑,因为它同时处理普通深度链接和 firebase 动态链接。
为了处理普通的深层链接,我有这个:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
parseDeepLink(data);
}
要添加对 firebase 动态链接(和 firebase 应用程序邀请)的支持,文档建议使用这个:
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
if (pendingDynamicLinkData != null) {
Uri deepLink = pendingDynamicLinkData.getLink();
// Extract invite
FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if (invite != null) {
String invitationId = invite.getInvitationId();
// handle invite
}
parseDeepLink(deepLink);
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
finish();
}
});
但是,使用上面更新的代码,我无法接收普通的 deepLinks,因为 pendingDynamicLinkData 对于普通的 deepLinks 总是 null。我应该在 onFailure()
方法中使用 parseDeepLink(getIntent().getData())
吗?
处理普通深度链接和 Firebase 动态链接的正确方法是什么?
对于非动态链接,您应该只使用
Uri data = intent.getData();
和以前一样。您可以在成功回调中检查,例如
if (pendingDynamicLinkData != null) {
Uri deepLink = pendingDynamicLinkData.getLink();
// Extract invite
FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if (invite != null) {
String invitationId = invite.getInvitationId();
// handle invite
}
parseDeepLink(deepLink);
} else {
Uri data = intent.getData();
parseDeepLink(data);
}