6

Tôi đã tích hợp Firebase vào dự án Android của mình, để nhận giá trị thông số khác cho người dùng ứng dụng khác nhau. tôi đã làm như sau:Điều kiện cấu hình từ xa Firebase theo userId

  1. người dùng cài đặt trong dự án căn cứ hỏa lực enter image description here
  2. khán giả tạo của tôi để phù hợp với người sử dụng: enter image description here UID đã AAAAAAA ...BBBBBBB ... cho phù hợp.
  3. Tạo một tham số trong phần Config từ xa: enter image description here
  4. thêm điều kiện cho tham số này: enter image description here và thiết lập giá trị cho các điều kiện: enter image description here
  5. nhập đoạn mã sau để đăng nhập người sử dụng từ các ứng dụng:

    Task resultTask = 
        firebaseAuth.signInWithEmailAndPassword("[email protected]", password);
  6. Đảm bảo đăng nhập thành công.
  7. Sau đó, tôi đã cố gắng để lấy các tham số cấu hình từ xa:
    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()); 
             } 
            } 
           });

Kết quả là tôi luôn luôn có giá trị mặc định: DefaultValue

Tôi đã làm gì sai? Tôi đã bỏ lỡ cái gì?

Trả lời

6

Sau khi điều tra, tôi đã xác định rằng Firebase Analytics và Xác thực Firebase là 2 mô-đun khác nhau không tự động kết nối với nhau.

Sử dụng xác thực Firebase không tự động xác định người dùng là một phần của đối tượng cụ thể, như tôi mong đợi.

Tôi cần phải thông báo cho Firebase Analytics rằng người dùng hiện tại có ID người dùng cụ thể để có thể khớp với ID đó với đối tượng có liên quan. Tôi thêm vào đoạn mã sau để đăng nhập onComplete callback:

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

Điểm mấu quan trọng là:

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

Một số điều cần lưu ý:

  1. Một khi người dùng đang ở trong một khán giả nó có thể không bao giờ thoát khỏi đối tượng, có nghĩa là, nếu bạn thay đổi người dùng trong ứng dụng từ cùng một thiết bị, bạn sẽ nhận được kết quả phù hợp với 2 đối tượng: Đối tượng mới và đối tượng trước đó.
  2. Trong khi thử nghiệm, tôi phải lấy thông số cấu hình từ xa rất thường xuyên. Mặc dù tôi đặt hết hạn bộ nhớ cache là 0, tôi đã gặp sự cố khác: Máy chủ Firebase phản hồi đôi khi có ngoại lệ điều chỉnh. Vì vậy, trong khi kiểm tra chắc chắn không phải để throttle máy chủ hoặc bạn sẽ phải chờ đợi một thời gian dài giữa các bài kiểm tra.
  3. Tôi không chắc chắn, nhưng nó đường nối mà Firebase Analytics theo dõi người dùng ứng dụng bằng một id khác với id được xác định bằng Xác thực Firebase. Tôi nghĩ, đây là lý do tại sao nếu bạn đăng nhập bằng id người dùng khác trong Xác thực Firebase từ cùng một thiết bị, bạn vẫn khớp với đối tượng đã được thiết lập cho ID người dùng Firebase previuos.
+0

Người dùng có phải đăng nhập để phân tích nhận dạng ID duy nhất của họ không? –

+1

@IgorGanapolsky: Có, đăng nhập là bắt buộc, vì vậy Firebase sẽ ghi lại ID duy nhất. – noti

Các vấn đề liên quan