2017-07-07 25 views
0

我在Firebase控制檯中創建了動態鏈接。它有一個簡短的URL,用於將用戶指向應用程序內的Activity。如何在Firebase Android中獲取用戶點擊的動態短鏈接?

我已經做了在iOS中一樣,使用的代碼:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool 
{ 

    if let incomingUrl = userActivity.webpageURL 
    { 
    print(incomingUrl) //Here I get the url that the user clicked on 
    } 
} 

我試圖得到確切的輸出Android中,當用戶點擊動態短鏈接。 目前,我有:

 FirebaseDynamicLinks.getInstance() 
      .getDynamicLink(getIntent()) 
      .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { 
       @Override 
       public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { 
        // Get deep link from result (may be null if no link is found) 
        Uri deepLink = null; 
        if (pendingDynamicLinkData != null) 
        { 
         deepLink = pendingDynamicLinkData.getLink(); 

        } 


        // Handle the deep link. For example, open the linked 
        // content, or apply promotional credit to the user's 
        // account. 
        // ... 

        // ... 
       } 
      }) 
      .addOnFailureListener(this, new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 
        Log.w(TAG, "getDynamicLink:onFailure", e); 
       } 
      }); 

在這裏,我可以得到深層鏈接,我有獲取Android中的短鏈接沒有清晰的概念。

謝謝。

回答

0

您誤會了動態鏈接和Branch.io(全面披露:我在分支團隊)工作的平臺方式。 你的Android實現是正確的 - iOS是錯誤的。你會想檢討the Dynamic Links setup guide for iOS,以確保你全部設定。

使用託管深層鏈接的主要好處之一是您不需要需要用戶點擊的實際URL。有兩個很好的理由:

  • 該URL永遠不可用於延期深層鏈接用例(應用程序尚未安裝時)。
  • 當應用程序通過通用鏈接/應用程序鏈接打開而不是通過自定義URI方案時,URL到達的方式不同。

託管鏈接平臺將這些技術細節提取出來,以便您可以實現自己的功能而不必擔心它們。如果你試圖繞過預期的用法,它實際上會讓事情變得更加困難。

+0

當用戶將邀請分享給其他用戶時,我會將用戶ID(特定於應用程序)附加到動態短鏈接。它在iOS中工作,因爲我可以獲取用戶ID,然後在應用程序內部根據需要進行操作。 既然你認爲這是不可能的,有沒有一種方法可以獲取像userID這樣的細節?我想我會在構建動態鏈接時將它們作爲參數傳遞。是這樣嗎? –

+0

這是正確的方法,是的。在Branch中,我們爲每個鏈接返回一個數據字典而不是一個參數,所以我們自動捕獲附加的參數並將它們插入到數據字典中。這給了更多的靈活性,但基本上是相同的方法。 –

相關問題