2017-08-08 92 views
1

我對谷歌文檔感到困惑,同時處理簡單的深度鏈接和Firebase動態鏈接。如何同時處理Firebase DynamicLink和簡單的DeepLink?

要處理平原深層鏈接,我有這樣的:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    String action = intent.getAction(); 
    Uri data = intent.getData(); 

    parseDeepLink(data); 
} 

要添加火力動態鏈接(和火力程式邀請)的支持,該文檔建議使用:

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

然而,使用上面更新的代碼,我無法接收簡單的深度鏈接,因爲pendingDynamicLinkData對於普通的深度鏈接始終爲空。我應該在onFailure()方法中使用parseDeepLink(getIntent().getData())嗎?

處理普通DeepLink和Firebase動態鏈接的正確方法是什麼?

回答

1

對於非動態的鏈接,你應該只使用

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); 
    } 
+0

是的,我目前正在這樣做,即使用getIntent()。getData()if pendingDyanmicLinkData == null。我最初認爲,普通的deepLinks會觸發onFailure()方法而不是onSuccess()方法。我想知道這是否是正確的方式,或者是否有更好的優雅解決方案可用於此目的。任何想法onFailure()方法被觸發?無論如何我都無法觸發它。 – ArunL

+0

如果失敗是一個動態鏈接,但不能正確處理 - 真正的錯誤情況,不應該發生在正常流程中 –