6

मैंने विभिन्न एंड्रॉइड प्रोजेक्ट के लिए एक अलग पैरामीटर मान प्राप्त करने के लिए अपने एंड्रॉइड प्रोजेक्ट में फायरबेस को एकीकृत किया।उपयोगकर्ता द्वारा फायरबेस रिमोट कॉन्फ़िगरेशन स्थिति आईडी

मेरी Firebase परियोजना enter image description here
  • निर्मित दर्शकों में
    1. सेटअप उन उपयोगकर्ताओं मैच के लिए: मैं निम्नलिखित किया enter image description here UIDs AAAAAAA ..., और BBBBBBB ... थे तदनुसार। स्थितियों के लिए enter image description here मूल्यों और सेट: इस पैरामीटर के लिए enter image description here
    2. जोड़ी की स्थिति:
    3. रिमोट कॉन्फ़िग खंड में एक पैरामीटर बनाया

      : enter image description here
    4. आवेदन से उपयोगकर्ता को प्रवेश करने के लिए निम्न कोड में प्रवेश किया

      Task resultTask = 
          firebaseAuth.signInWithEmailAndPassword("[email protected]", password);
    5. सुनिश्चित किया गया कि साइन इन सफल हुआ।
    6. तब मैं दूरस्थ config पैरामीटर लाने की कोशिश की:
      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()); 
               } 
              } 
             });

    परिणाम यह हुआ कि मैं हमेशा डिफ़ॉल्ट मान है: DefaultValue

    क्या मैं गलत क्या किया? मुझसे क्या छूट गया?

  • उत्तर

    6

    कुछ जांच के बाद मुझे लगा कि फायरबेस विश्लेषण और फायरबेस प्रमाणन 2 अलग-अलग मॉड्यूल हैं जो स्वचालित रूप से इंटर-कनेक्ट नहीं होते हैं।

    फ़ायरबेस प्रमाणीकरण का उपयोग करके उपयोगकर्ता को विशेष श्रोताओं के हिस्से के रूप में स्वचालित रूप से पहचान नहीं किया गया था, जैसा कि मैंने अपेक्षा की थी।

    मुझे फ़ायरबेस विश्लेषण को बताने की आवश्यकता है, कि वर्तमान उपयोगकर्ता के पास विशिष्ट उपयोगकर्ता आईडी है, इसलिए यह प्रासंगिक दर्शकों से मेल खा सकता है।

    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. एक बार एक उपयोगकर्ता एक दर्शक यह कर सकते हैं में है मैं साइन-इन onComplete कॉलबैक के लिए निम्न कोड जोड़ा कभी भी दर्शकों से बाहर निकलें, जिसका अर्थ है, यदि आप उसी डिवाइस से ऐप में उपयोगकर्ता को बदलते हैं, तो आपको 2 ऑडियंस का मिलान मिलेगा: नए दर्शक, और पिछले एक।
    2. इसका परीक्षण करते समय मुझे रिमोट कॉन्फ़िगरेशन पैरामीटर को अक्सर प्राप्त करना पड़ा। हालांकि मैंने कैश की समाप्ति 0 पर सेट की है, लेकिन मुझे एक अलग समस्या थी: फायरबेस सर्वर ने कभी-कभी थ्रॉटलिंग अपवाद के साथ जवाब दिया। इसलिए, परीक्षण सुनिश्चित करते समय सर्वर को थ्रॉटल नहीं करना है या आपको परीक्षणों के बीच लंबे समय तक इंतजार करना होगा।
    3. मुझे यकीन नहीं है, लेकिन यह लगता है कि फायरबेस विश्लेषण एप उपयोगकर्ता को एक अलग आईडी के साथ ट्रैक करता है, जिसे फ़ायरबेस प्रमाणीकरण के साथ परिभाषित किया जाता है। मुझे लगता है, यही कारण है कि यदि आप एक ही डिवाइस से फायरबेस प्रमाणीकरण में विभिन्न उपयोगकर्ता आईडी के साथ साइन-इन करते हैं, तो भी आप उन श्रोताओं से मेल खाते हैं जो प्रीवियोस फ़ायरबेस उपयोगकर्ता आईडी के लिए सेटअप थे।
    +0

    क्या उपयोगकर्ता को अपनी अद्वितीय आईडी को पहचानने के लिए एनालिटिक्स के लिए लॉग इन करना है? –

    +1

    @ इगोरगानापोलस्की: हाँ, साइन इन आवश्यक है, इसलिए फायरबेस अद्वितीय आईडी रिकॉर्ड करता है। – noti

    संबंधित मुद्दे