我对Google文档感到困惑,无法同时处理普通的DeepLink和firebase动态链接。

要处理普通的deepLink,我需要这样做:

@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();
    }
});


但是,使用上述更新的代码,我无法接收普通的DeepLink,因为对于纯deepeeps,pendingDynamicLinkData始终为null。我应该在parseDeepLink(getIntent().getData())方法中使用onFailure()吗?

处理普通的DeepLink和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);
    }

关于android - 如何同时处理Firebase DynamicLink和普通DeepLink?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45570125/

10-09 02:11