6

我將Firebase集成到我的Android項目中,爲不同的應用程序用戶獲取不同的參數值。 我做了以下內容:在我的火力地堡項目enter image description here Firebase遠程配置條件由userId

  • 創建觀衆

    1. 設置用戶相匹配的用戶:enter image description here的UID是AAAAAAA ...,並BBBBBBB ...因此。
    2. 創建在遠程配置部分中的參數:enter image description here
    3. 此參數添加條件:enter image description here和設定值的條件:enter image description here
    4. 進入下面的代碼從所述應用在用戶登入:

      Task resultTask = 
          firebaseAuth.signInWithEmailAndPassword("[email protected]", password);
    5. 確保登錄成功。
    6. 然後我試圖獲取遠程配置參數:
      firebaseRemoteConfig.fetch() 
             .addOnCompleteListener(new OnCompleteListener() { 
              @Override 
              public void onComplete(@NonNull Task task) { 
               if (task.isSuccessful()) { 
                // Once the config is successfully fetched it must be activated before newly fetched 
                // values are returned. 
                firebaseRemoteConfig.activateFetched(); 
                Log.d(TAG, firebaseRemoteConfig.getString("MyParameter")); 
               } else { 
                Log.d(TAG, "fetch firebase remote config failed. Reason = " + task.getException()); 
               } 
              } 
             });

    的結果是,我總是得到默認值:默認值

    我做了什麼錯?我錯過了什麼?

  • 回答

    6

    經過一番調查後,我發現Firebase Analytics和Firebase Authentication是兩個不會自動互連的不同模塊。

    如我所料,使用Firebase身份驗證並未自動將用戶識別爲特定受衆羣體的一部分。

    我需要告訴Firebase Analytics,當前用戶具有特定的用戶ID,因此可以將其與相關受衆相匹配。我下面的代碼添加到登錄的onComplete回調:

    Task<AuthResult> resultTask = 
        firebaseAuth.signInWithEmailAndPassword("[email protected]", password); 
    resultTask.addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
         @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          // Task completed successfully 
          if (task.isSuccessful()) { 
           firebaseAnalytics.setUserId(task.getResult().getUser().getUid()); 
          } else { 
           Log.d(TAG, "signInWithEmail firebase failed"); 
          } 
         } 
        }); 
    

    的重要行是:

    firebaseAnalytics.setUserId(task.getResult().getUser().getUid());

    需要注意以下幾點:

    1. 一旦用戶是在觀衆就可以從不退出觀衆,這意味着,如果您從同一設備更改應用中的用戶,則會與2個觀衆獲得匹配:新觀衆和前一觀衆。
    2. 在測試時,我必須非常頻繁地獲取遠程配置參數。儘管我將緩存過期設置爲0,但我遇到了另一個問題:Firebase服務器在某個時候出現了節流異常。所以,在測試時務必不要扼殺服務器,否則你將不得不在測試之間等待很長時間。
    3. 我不確定,但它表示Firebase Analytics使用不同的ID跟蹤應用用戶,然後使用Firebase身份驗證定義的用戶。我認爲,這就是爲什麼如果您使用同一設備的Firebase身份驗證中的其他用戶標識登錄,那麼您仍然與爲之前的Firebase用戶標識設置的受衆羣體匹配。
    +0

    用戶是否必須登錄進行分析以識別其唯一ID? –

    +1

    @IgorGanapolsky:是的,需要登錄,因此Firebase會記錄唯一ID。 – noti