Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

برنامه Android Android خود را به Firebase مهاجرت کنید

اگر یک کاربر پارسی هستید که به دنبال راه حل جایگزین Backend به عنوان یک راه حل خدمات هستید ، ممکن است Firebase گزینه ایده آل برای برنامه Android شما باشد.

این راهنما نحوه ادغام سرویس های خاص در برنامه شما را توصیف می کند. برای دستورالعمل های اصلی تنظیم Firebase ، به راهنمای تنظیم Android مراجعه کنید.

تجزیه و تحلیل ترافیک گوگل

Google Analytics یک راه حل اندازه گیری رایگان برنامه است که بینشی در مورد استفاده از برنامه و درگیری کاربر ایجاد می کند. Analytics در میان ویژگی های Firebase ادغام شده و گزارش نامحدودی را برای حداکثر 500 رویداد مجزا ارائه می دهد که می توانید با استفاده از Firebase SDK تعریف کنید.

برای کسب اطلاعات بیشتر به اسناد Google Analytics مراجعه کنید.

استراتژی پیشنهادی مهاجرت

استفاده از ارائه دهندگان مختلف تجزیه و تحلیل یک سناریوی متداول است که به راحتی در Google Analytics اعمال می شود. فقط کافی است آن را به برنامه خود اضافه کنید تا از وقایع و ویژگی های کاربرانی که Analytics بطور خودکار جمع می کند ، مانند اولین باز کردن ، بروزرسانی برنامه ، مدل دستگاه ، سن استفاده کنید.

برای رویدادهای سفارشی و خصوصیات کاربر ، می توانید برای ثبت وقایع و ویژگی ها ، از یک استراتژی نوشتن با استفاده از دو روش پارس آنالیتیکس و Google Analytics استفاده کنید ، این امر به شما امکان می دهد تا به تدریج راه حل جدید را حذف کنید.

مقایسه کد

تجزیه و تحلیل تجزیه و تحلیل

 // Start collecting data
ParseAnalytics.trackAppOpenedInBackground(getIntent());

Map<String, String> dimensions = new HashMap<String, String>();
// Define ranges to bucket data points into meaningful segments
dimensions.put("priceRange", "1000-1500");
// Did the user filter the query?
dimensions.put("source", "craigslist");
// Do searches happen more often on weekdays or weekends?
dimensions.put("dayType", "weekday");

// Send the dimensions to Parse along with the 'search' event
ParseAnalytics.trackEvent("search", dimensions);
 

تجزیه و تحلیل ترافیک گوگل

 // Obtain the FirebaseAnalytics instance and start collecting data
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

Bundle params = new Bundle();
// Define ranges to bucket data points into meaningful segments
params.putString("priceRange", "1000-1500");
// Did the user filter the query?
params.putString("source", "craigslist");
// Do searches happen more often on weekdays or weekends?
params.putString("dayType", "weekday");

// Send the event
mFirebaseAnalytics.logEvent("search", params);
 

پایگاه داده Realtime Firebase

پایگاه داده Firebase Realtime یک پایگاه داده ابری NoSQL است. داده ها به صورت JSON ذخیره می شوند و در هر زمان واقعی برای هر مشتری متصل همگام سازی می شوند.

برای کسب اطلاعات بیشتر به اسناد پایگاه داده Realtime Firebase مراجعه کنید.

تفاوت با داده های تجزیه

اشیاء

در پارس یک ParseObject یا یک زیر کلاس از آن را ذخیره می کنید که شامل جفت های کلیدی داده های سازگار با JSON است. داده ها بصورت طرح دار هستند ، به این معنی که نیازی به مشخص کردن کلیدهای موجود در هر ParseObject .

تمام داده های Firebase Realtime Database به عنوان اشیاء JSON ذخیره می شوند و معادل آن برای ParseObject وجود ندارد. شما به سادگی با انواع درختان JSON مطابق با انواع موجود JSON می نویسید. برای ساده کردن خواندن و نوشتن از پایگاه داده می توانید از اشیا جاوا استفاده کنید.

در زیر مثالی از چگونگی ذخیره امتیازات بالا برای یک بازی ذکر شده است.

پارس کنید
 @ParseClassName("GameScore")
public class GameScore {
        public GameScore() {}
        public GameScore(Long score, String playerName, Boolean cheatMode) {
            setScore(score);
            setPlayerName(playerName);
            setCheatMode(cheatMode);
        }

        public void setScore(Long score) {
            set("score", score);
        }

        public Long getScore() {
            return getLong("score");
        }

        public void setPlayerName(String playerName) {
            set("playerName", playerName);
        }

        public String getPlayerName() {
            return getString("playerName");
        }

        public void setCheatMode(Boolean cheatMode) {
            return set("cheatMode", cheatMode);
        }

        public Boolean getCheatMode() {
            return getBoolean("cheatMode");
        }
}

// Must call Parse.registerSubclass(GameScore.class) in Application.onCreate
GameScore gameScore = new GameScore(1337, "Sean Plott", false);
gameScore.saveInBackground();
 
پایه آتش
 // Assuming we defined the GameScore class as:
public class GameScore {
        private Long score;
        private String playerName;
        private Boolean cheatMode;

        public GameScore() {}
        public GameScore(Long score, String playerName, Boolean cheatMode) {
            this.score = score;
            this.playerName = playerName;
            this.cheatMode = cheatMode;
        }

        public Long getScore() {
            return score;
        }

        public String getPlayerName() {
            return playerName;
        }

        public Boolean getCheatMode() {
            return cheatMode;
        }
}

// We would save it to our list of high scores as follows:
DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference();
GameScore score = new GameScore(1337, "Sean Plott", false);
mFirebaseRef.child("scores").push().setValue(score);
 
برای اطلاعات بیشتر ، راهنمای خواندن و نوشتن اطلاعات را در راهنمای Android بررسی کنید .

روابط بین داده ها

یک ParseObject می تواند با ParseObject دیگری رابطه ParseObject : هر جسم می تواند از اشیاء دیگر به عنوان مقادیر استفاده کند.

در بانک اطلاعاتی Firebase Realtime ، روابط با استفاده از ساختار داده های مسطح که داده ها را در مسیرهای جداگانه تقسیم می کنند ، بیان شده است تا در تماس های جداگانه ، آنها بتوانند بارگیری شوند.

در زیر مثالی از چگونگی ساخت رابطه بین پست ها در یک برنامه وبلاگ نویسی و نویسندگان آنها وجود دارد.

پارس کنید
 // Create the author
ParseObject myAuthor = new ParseObject("Author");
myAuthor.put("name", "Grace Hopper");
myAuthor.put("birthDate", "December 9, 1906");
myAuthor.put("nickname", "Amazing Grace");

// Create the post
ParseObject myPost = new ParseObject("Post");
myPost.put("title", "Announcing COBOL, a New Programming Language");

// Add a relation between the Post and the Author
myPost.put("parent", myAuthor);

// This will save both myAuthor and myPost
myPost.saveInBackground();
 
پایه آتش
 DatabaseReference firebaseRef = FirebaseDatabase.getInstance().getReference();
// Create the author
Map<String, String> myAuthor = new HashMap<String, String>();
myAuthor.put("name", "Grace Hopper");
myAuthor.put("birthDate", "December 9, 1906");
myAuthor.put("nickname", "Amazing Grace");

// Save the author
String myAuthorKey = "ghopper";
firebaseRef.child('authors').child(myAuthorKey).setValue(myAuthor);

// Create the post
Map<String, String> post = new HashMap<String, String>();
post.put("author", myAuthorKey);
post.put("title", "Announcing COBOL, a New Programming Language");
firebaseRef.child('posts').push().setValue(post);
 

طرح داده های زیر نتیجه است.

{
  // Info about the authors
  "authors": {
    "ghopper": {
      "name": "Grace Hopper",
      "date_of_birth": "December 9, 1906",
      "nickname": "Amazing Grace"
    },
    ...
  },
  // Info about the posts: the "author" fields contains the key for the author
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "ghopper",
      "title": "Announcing COBOL, a New Programming Language"
    }
    ...
  }
}
برای اطلاعات بیشتر ، راهنمای ساختار پایگاه داده خود را بررسی کنید.

خواندن داده

در پارس داده ها را با استفاده از شناسه یک شی خاص پارس یا اجرای پرس و جوها با استفاده از ParseQuery .

در Firebase ، داده ها را با اتصال یک شنونده ناهمزمان به یک مرجع بانک اطلاعاتی بازیابی می کنید. شنونده برای حالت اولیه داده ها و هنگامی که داده تغییر می کند ، یک بار شروع می شود ، بنابراین نیازی به افزودن کد برای تعیین تغییر داده ها ندارید.

در زیر مثالی از چگونگی بازیابی نمرات برای یک بازیکن خاص ، بر اساس نمونه ارائه شده در بخش "اشیاء" ، آمده است .

پارس کنید
 ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.whereEqualTo("playerName", "Dan Stemkoski");
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> scoreList, ParseException e) {
        if (e == null) {
            for (ParseObject score: scoreList) {
                Log.d("score", "Retrieved: " + Long.toString(score.getLong("score")));
            }
        } else {
            Log.d("score", "Error: " + e.getMessage());
        }
    }
});
 
پایه آتش
 DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference();
Query mQueryRef = mFirebaseRef.child("scores").orderByChild("playerName").equalTo("Dan Stemkoski");

// This type of listener is not one time, and you need to cancel it to stop
// receiving updates.
mQueryRef.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot snapshot, String previousChild) {
        // This will fire for each matching child node.
        GameScore score = snapshot.getValue(GameScore.class);
        Log.d("score", "Retrieved: " + Long.toString(score.getScore());
    }
});
 
برای اطلاعات بیشتر در مورد انواع موجود شنوندگان رویداد و نحوه سفارش و فیلتر کردن داده ها ، راهنمای خواندن و نوشتن اطلاعات را در راهنمای Android بررسی کنید .

استراتژی پیشنهادی مهاجرت

داده های خود را دوباره مرور کنید

پایگاه داده Firebase Realtime برای همگام سازی داده ها در میلی ثانیه در کلیه مشتری های متصل بهینه شده است ، و ساختار داده های حاصل از آن با داده های اصلی پارس متفاوت است. این بدان معناست که اولین قدم برای مهاجرت شما در نظر گرفتن تغییراتی که داده های شما نیاز دارند ، از جمله:

  • چگونه اشیاء پارسی شما باید به داده های Firebase نقشه برداری کنند
  • اگر روابط والدین و فرزند دارید ، چگونه می توانید داده های خود را در مسیرهای مختلف تقسیم کنید تا بتوانید در مکالمات جداگانه بارگیری موثری داشته باشید.

داده های خود را مهاجرت کنید

پس از تصمیم گیری در مورد نحوه ساختن داده های خود در Firebase ، باید برنامه ریزی کنید که دوره ای را که باید برنامه شما برای هر دو پایگاه داده بنویسد ، مدیریت کند. انتخاب های شما عبارتند از:

زمینه همگام سازی

در این سناریو ، شما دو نسخه از برنامه دارید: نسخه قدیمی که از پارس و نسخه جدیدی استفاده می کند که از Firebase استفاده می کند. همگام سازی بین دو پایگاه داده توسط پارس ابر کد (پارس به Firebase) انجام می شود ، با کد شما به تغییرات در Firebase گوش می دهد و آن تغییرات را با پارس همگام می کند. قبل از شروع استفاده از نسخه جدید ، باید:

  • پارس داده موجود را به ساختار جدید Firebase تبدیل کرده و آن را در بانک اطلاعات Realtime Firebase بنویسید.
  • توابع Parse Cloud Code را که از Firebase REST API استفاده می کند بنویسید تا به پایگاه داده Realtime Firebase تغییر داده های ایجاد شده در پارس داده توسط مشتری های قدیمی بنویسید.
  • کدی را بنویسید و بکار ببندید که در Firebase تغییراتی را گوش دهد و آنها را در پایگاه داده پارس همگام سازی کند.

این سناریو جدایی تمیز از کد قدیمی و جدید را تضمین کرده و مشتری را ساده نگه می دارد. چالش های این سناریو استفاده از مجموعه داده های بزرگ در صادرات اولیه و اطمینان از عدم همگام سازی دو طرفه بازگشت مجدد بی نهایت نیست.

دوبار نوشتن

در این سناریو ، شما می توانید نسخه جدیدی از برنامه را که از Firebase و Parse استفاده می شود ، با استفاده از پارس Cloud Code برای همگام سازی تغییرات ایجاد شده توسط مشتریان قدیمی از پارس داده تا پایگاه داده Realtime Firebase استفاده کنید. هنگامی که تعداد کافی از مردم از نسخه پارس تنها برنامه مهاجرت کرده اند ، می توانید کد پارس را از نسخه نوشتن دوبرابر حذف کنید.

این سناریو به هیچ کد سمت سرور احتیاج ندارد. مضرات آن این است که داده هایی که به آنها دسترسی پیدا نمی کنید مهاجرت نمی شوند و اندازه برنامه شما با استفاده از هر دو SDK افزایش می یابد.

تأیید اعتبار Firebase

تأیید اعتبار Firebase می تواند کاربران را با استفاده از گذرواژه‌ها و ارائه دهندگان هویت محبوب فدراسیون مانند Google ، Facebook و Twitter تأیید هویت کند. همچنین کتابخانه های UI را در اختیار شما قرار می دهد تا سرمایه گذاری قابل توجهی را که برای اجرای و حفظ یک تجربه احراز هویت کامل برای برنامه خود در تمام سیستم عامل ها انجام می دهد ، ذخیره کند.

برای کسب اطلاعات بیشتر به اسناد تأیید اعتبار Firebase مراجعه کنید.

تفاوت با پارس نویسنده

پارس یک کلاس کاربر تخصصی به نام ParseUser که به طور خودکار عملکردهای مورد نیاز برای مدیریت حساب کاربری را کنترل می کند. ParseUser زیر مجموعه ای از ParseObject ، به این معنی که داده های کاربر در داده پارس موجود است و می تواند با زمینه های اضافی مانند هر ParseObject دیگر ParseObject .

FirebaseUser دارای مجموعه ای ثابت از خصوصیات اساسی است - یک شناسه منحصر به فرد ، یک آدرس ایمیل اولیه ، یک نام و یک آدرس اینترنتی عکس - که در پایگاه داده کاربر یک پروژه جداگانه ذخیره می شود. این خصوصیات را می توان توسط کاربر به روز کرد. شما نمی توانید خصوصیات دیگری را به طور مستقیم به آبجکت FirebaseUser اضافه کنید. درعوض ، می توانید خصوصیات اضافی را در پایگاه داده Realtime Firebase خود ذخیره کنید.

در زیر مثالی از چگونگی ثبت نام کاربر و افزودن فیلد شماره تلفن اضافی وجود دارد.

پارس کنید
 ParseUser user = new ParseUser();
user.setUsername("my name");
user.setPassword("my pass");
user.setEmail("email@example.com");

// other fields can be set just like with ParseObject
user.put("phone", "650-253-0000");

user.signUpInBackground(new SignUpCallback() {
    public void done(ParseException e) {
        if (e == null) {
            // Hooray! Let them use the app now.
        } else {
            // Sign up didn't succeed. Look at the ParseException
            // to figure out what went wrong
        }
    }
});
 
پایه آتش
 FirebaseAuth mAuth = FirebaseAuth.getInstance();

mAuth.createUserWithEmailAndPassword("email@example.com", "my pass")
    .continueWithTask(new Continuation<AuthResult, Task<Void>> {
        @Override
        public Task<Void> then(Task<AuthResult> task) {
            if (task.isSuccessful()) {
                FirebaseUser user = task.getResult().getUser();
                DatabaseReference firebaseRef = FirebaseDatabase.getInstance().getReference();
                return firebaseRef.child("users").child(user.getUid()).child("phone").setValue("650-253-0000");
            } else {
                // User creation didn't succeed. Look at the task exception
                // to figure out what went wrong
                Log.w(TAG, "signInWithEmail", task.getException());
            }
        }
    });
 

استراتژی مهاجرتی پیشنهادی

مهاجرت حسابها

برای مهاجرت حسابهای کاربری از پارس به Firebase ، پایگاه داده کاربر خود را به یک پرونده JSON یا CSV صادر کنید ، سپس با استفاده از auth:import پرونده را در پروژه Firebase خود وارد کنید.

ابتدا پایگاه داده کاربر خود را از کنسول پارس یا پایگاه داده خود میزبان خود صادر کنید. به عنوان مثال ، یک پرونده JSON که از کنسول پارس صادر شده ممکن است به شرح زیر باشد:

{ // Username/password user
  "bcryptPassword": "$2a$10$OBp2hxB7TaYZgKyTiY48luawlTuYAU6BqzxJfpHoJMdZmjaF4HFh6",
  "email": "user@example.com",
  "username": "testuser",
  "objectId": "abcde1234",
  ...
},
{ // Facebook user
  "authData": {
    "facebook": {
      "access_token": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
      "expiration_date": "2017-01-02T03:04:05.006Z",
      "id": "1000000000"
    }
  },
  "username": "wXyZ987654321StUv",
  "objectId": "fghij5678",
  ...
}

سپس ، پرونده صادر شده را به قالب مورد نیاز Firebase CLI تبدیل کنید. از objectId از کاربران پارس خود به عنوان localId برای کاربران Firebase استفاده کنید. همچنین ، base64 مقادیر bcryptPassword را از پارس رمزگذاری کرده و از آنها در قسمت passwordHash استفاده می کند. مثلا:

{
  "users": [
    {
      "localId": "abcde1234",  // Parse objectId
      "email": "user@example.com",
      "displayName": "testuser",
      "passwordHash": "JDJhJDEwJE9CcDJoeEI3VGFZWmdLeVRpWTQ4bHVhd2xUdVlBVTZCcXp4SmZwSG9KTWRabWphRjRIRmg2",
    },
    {
      "localId": "fghij5678",  // Parse objectId
      "displayName": "wXyZ987654321StUv",
      "providerUserInfo": [
        {
          "providerId": "facebook.com",
          "rawId": "1000000000",  // Facebook ID
        }
      ]
    }
  ]
}

در آخر ، پرونده تبدیل شده را با Firebase CLI وارد کنید ، bcrypt را به عنوان الگوریتم هش مشخص کنید:

firebase auth:import account_file.json --hash-algo=BCRYPT

انتقال داده های کاربر

اگر در حال ذخیره داده های اضافی برای کاربران خود هستید ، می توانید با استفاده از استراتژی های شرح داده شده در بخش مهاجرت داده ، آن را به Firebase Realtime Database منتقل کنید. اگر با استفاده از جریان توصیف شده در بخش مهاجرت حساب ها ، حساب های خود را مهاجرت می کنید ، حساب های Firebase شما همانند حساب های پارس شماست و به شما امکان می دهد تا به راحتی مهاجرت و تولید مثل هر گونه رابطه مهم توسط شناسه کاربر را انجام دهید.

پیام ابر ابر Firebase

Firebase Cloud Messaging (FCM) یک راه حل پیام رسانی متقاطع است که به شما امکان می دهد پیام ها و اعلان های قابل اعتماد را بدون هیچ هزینه ای تحویل دهید. آهنگساز Notifications یک سرویس رایگان است که در Firebase Cloud Messaging ساخته شده است و اعلان های کاربر هدفمند را برای توسعه دهندگان برنامه تلفن همراه امکان پذیر می کند.

برای کسب اطلاعات بیشتر به اسناد پیامرسانی Cloud Firebase مراجعه کنید.

تفاوت با اعلان های Parse Push

هر برنامه پارس نصب شده در دستگاهی که برای اعلان ها ثبت شده است ، یک شیء مربوط به Installation دارد ، که در آن شما می توانید تمام داده های مورد نیاز برای هدفمند کردن اعلان ها را ذخیره کنید. Installation یک زیر کلاس از ParseUser ، به این معنی که می توانید هرگونه داده اضافی را که می خواهید به نمونه های Installation خود اضافه کنید.

آهنگساز اطلاعیه ها بخش های از پیش تعریف شده کاربر را بر اساس اطلاعاتی مانند برنامه ، نسخه برنامه و زبان دستگاه ارائه می دهد. شما می توانید با استفاده از وقایع و ویژگی های Google Analytics برای ایجاد مخاطبان ، بخش های کاربر پیچیده تری بسازید. برای کسب اطلاعات بیشتر به راهنمای راهنمای مخاطبان مراجعه کنید. این اطلاعات هدفمندی در پایگاه داده Realtime Firebase قابل مشاهده نیستند.

استراتژی پیشنهادی مهاجرت

توکن های دستگاه مهاجرت

در زمان نوشتن ، پارس آندروید SDK از نسخه قدیمی تر نشانه های ثبت FCM استفاده می کند ، با ویژگی های ارائه شده توسط آهنگساز Notifications سازگار نیست.

با افزودن FCM SDK به برنامه خود می توانید یک نشان جدید بدست آورید. با این وجود ، این ممکن است نشانه ای را که توسط پارس SDK برای دریافت اعلانات استفاده می شود ، بی اعتبار کند. اگر می خواهید از این امر جلوگیری کنید ، می توانید SDK پارس را تنظیم کنید تا هم از شناسه فرستنده پارس و هم از شناسه فرستنده خود استفاده کنید. به این ترتیب شما نمادی را که توسط پارس SDK استفاده شده است ، باطل نمی کنید ، اما توجه داشته باشید که وقتی پارس پروژه خود را خاموش می کند ، این کار متوقف می شود.

انتقال کانال به مباحث FCM

اگر از کانالهای پارس برای ارسال اعلان استفاده می کنید ، می توانید به مباحث FCM ، که همان مدل ناشر-مشترک را ارائه می دهند ، مهاجرت کنید. برای رسیدگی به انتقال از پارس به FCM ، می توانید نسخه جدیدی از برنامه را که از پارس SDK استفاده می کند برای عضویت در کانالهای پارس و FCM SDK برای اشتراک در موضوعات مربوط به FCM استفاده کنید. در این نسخه از برنامه باید دریافت اعلان ها در Parse SDK را غیرفعال کنید ، موارد زیر را از مانیفست برنامه خود حذف کنید:

 <service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParsePushBroadcastReceiver"
  android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
  android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

<!--
IMPORTANT: Change "com.parse.starter" to match your app's package name.
-->
<category android:name="com.parse.starter" />
</intent-filter>
</receiver>

<!--
IMPORTANT: Change "YOUR_SENDER_ID" to your GCM Sender Id.
-->
<meta-data android:name="com.parse.push.gcm_sender_id"
  android:value="id:YOUR_SENDER_ID" />;
 

به عنوان مثال ، اگر کاربر شما در موضوع "غولها" عضو شده باشد ، کاری را انجام می دهید:

 ParsePush.unsubscribeInBackground("Giants", new SaveCallback() {
    @Override
    public void done(ParseException e) {
        if (e == null) {
            FirebaseMessaging.getInstance().subscribeToTopic("Giants");
        } else {
            // Something went wrong unsubscribing
        }
    }
});
 

با استفاده از این استراتژی ، می توانید پیام هایی را به کانال پارس و موضوع FCM مربوطه ارسال کنید و از کاربران نسخه های قدیمی و جدید پشتیبانی کند. هنگامی که کاربران کافی از نسخه پارسی فقط به برنامه مهاجرت کرده اند ، می توانید آن نسخه را غروب کرده و فقط با استفاده از FCM شروع به ارسال کنید.

برای کسب اطلاعات بیشتر به اسناد مباحث FCM مراجعه کنید.

پیکربندی از راه دور Firebase

Firebase Remote Config یک سرویس ابری است که به شما امکان می دهد بدون نیاز به کاربران برای بارگیری به روزرسانی برنامه ، رفتار و ظاهر برنامه خود را تغییر دهید. هنگام استفاده از Remote Config ، مقادیر پیش فرض درون برنامه ایجاد می کنید که رفتار و ظاهر برنامه شما را کنترل می کند. سپس ، می توانید بعداً از کنسول Firebase برای رد کردن مقادیر پیش فرض درون برنامه برای همه کاربران برنامه یا بخش هایی از پایگاه کاربر استفاده کنید.

پیکربندی از راه دور Firebase می تواند در موارد مهاجرت شما بسیار مفید باشد در مواردی که می خواهید راه حل های مختلفی را آزمایش کنید و قادر باشید مشتری های بیشتری را به سمت ارائه دهنده دیگری تغییر دهید. به عنوان مثال ، اگر نسخه ای از برنامه خود دارید که هم از Firebase و هم از پارس برای داده استفاده می کند ، می توانید از یک قانون صدک تصادفی برای تعیین اینکه مشتریان از Firebase می خوانند استفاده کنید و به تدریج درصد را افزایش دهید.

برای کسب اطلاعات بیشتر در مورد تنظیمات از راه دور Firebase ، به معرفی Remote Config مراجعه کنید .

تفاوت با پیکربندی پارس

با استفاده از پیکربندی پارس می توانید جفت کلید / مقدار را به برنامه خود در داشبورد پارس پیکربندی اضافه کنید ، و سپس ParseConfig روی مشتری ParseConfig کنید. هر نمونه ParseConfig که بدست می آورید همیشه تغییر ناپذیر است. هنگامی که یک ParseConfig جدید را در آینده از شبکه بازیابی می کنید ، هیچ نمونه ParseConfig کنونی را تغییر نمی دهد ، بلکه در عوض یک مورد جدید ایجاد می کند و آن را از طریق getCurrentConfig() .

با Firebase Remote Config می توانید پیش فرض های درون برنامه ای را برای جفت های کلیدی و ارزش ایجاد کنید که می توانید از کنسول Firebase نادیده بگیرید و می توانید از قوانین و شرایطی برای ارائه تغییرات در تجربه کاربری برنامه خود به بخش های مختلف پایگاه کاربر استفاده کنید. تنظیمات از راه دور Firebase یک کلاس واحد را اجرا می کند که جفت های کلیدی / ارزش را در دسترس برنامه شما قرار می دهد. در ابتدا تک آهنگ مقادیر پیش فرض شما را در برنامه تعریف می کند. می توانید هر لحظه که مناسب برنامه شما باشد ، مجموعه جدیدی از ارزش ها را از سرور واکشی کنید. پس از رسیدن مجموعه جدید با موفقیت ، می توانید انتخاب کنید که چه زمانی این گزینه را فعال کنید تا مقادیر جدید در دسترس برنامه قرار بگیرد.

استراتژی پیشنهادی مهاجرت

شما می توانید با کپی کردن جفت های کلیدی / ارزش پیکربندی پارس خود در کنسول Firebase به Firebase Remote Config بروید ، و سپس با استفاده از نسخه جدید برنامه که از Firebase Remote Config استفاده می کند ، استفاده کنید.

اگر می خواهید با هر دو پارس پیکربندی و Firebase Remote Config آزمایش کنید ، می توانید نسخه جدیدی از برنامه را که از هر دو SDK استفاده می کند ، مستقر کنید تا اینکه تعداد کافی از کاربران فقط از نسخه پارس مهاجرت کرده باشند.

مقایسه کد

پارس کنید

 ParseConfig.getInBackground(new ConfigCallback() {
    @Override
    public void done(ParseConfig config, ParseException e) {
        if (e == null) {
            Log.d("TAG", "Yay! Config was fetched from the server.");
        } else {
            Log.e("TAG", "Failed to fetch. Using Cached Config.");
            config = ParseConfig.getCurrentConfig();
        }

        // Get the message from config or fallback to default value
        String welcomeMessage = config.getString("welcomeMessage", "Welcome!");
    }
});
 

پایه آتش

 mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
// Set defaults from an XML resource file stored in res/xml
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

mFirebaseRemoteConfig.fetch()
    .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d("TAG", "Yay! Config was fetched from the server.");
            // Once the config is successfully fetched it must be activated before newly fetched
            // values are returned.
            mFirebaseRemoteConfig.activateFetched();
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            Log.e("TAG", "Failed to fetch. Using last fetched or default.");
        }
    })

// ...

// When this is called, the value of the latest fetched and activated config is returned;
// if there's none, the default value is returned.
String welcomeMessage = mFirebaseRemoteConfig.getString("welcomeMessage");