یکپارچه سازی Remote Config در Android Codelab

1. مقدمه

آخرین به روز رسانی: 09-03-2021

Firebase Remote Config چیست؟

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

چگونه کار می کند؟

Remote Config شامل یک کتابخانه کلاینت است که وظایف مهمی مانند واکشی مقادیر پارامترها و ذخیره آنها را انجام می دهد، در حالی که همچنان به شما امکان کنترل زمان فعال شدن مقادیر جدید را می دهد تا بر تجربه کاربری برنامه شما تأثیر بگذارد. این به شما امکان می دهد از تجربه برنامه خود با کنترل زمان هر تغییر محافظت کنید.

روش های get کتابخانه کلاینت Remote Config یک نقطه دسترسی واحد برای مقادیر پارامتر فراهم می کند. برنامه شما با استفاده از منطقی که برای دریافت مقادیر پیش‌فرض درون برنامه استفاده می‌کند، مقادیر سمت سرور را دریافت می‌کند، بنابراین می‌توانید بدون نوشتن کد زیاد، قابلیت‌های Remote Config را به برنامه خود اضافه کنید.

برای نادیده گرفتن مقادیر پیش‌فرض درون برنامه، از کنسول Firebase یا APIهای پشتیبان پیکربندی راه دور برای ایجاد پارامترهایی با نام‌های مشابه پارامترهای مورد استفاده در برنامه خود استفاده می‌کنید. برای هر پارامتر، می‌توانید یک مقدار پیش‌فرض سمت سرور تنظیم کنید تا مقدار پیش‌فرض درون برنامه را لغو کند، و همچنین می‌توانید مقادیر شرطی برای لغو مقدار پیش‌فرض درون‌برنامه برای نمونه‌های برنامه‌ای که شرایط خاصی را دارند ایجاد کنید. این نمودار نشان می‌دهد که چگونه مقادیر پارامترها در باطن Remote Config و در برنامه شما اولویت‌بندی می‌شوند:

61f12f33d2ac3133.png

چیزی که یاد خواهید گرفت

  • نحوه پیاده سازی Firebase Remote Config
  • نحوه استفاده از Firebase Remote Config برای تغییر مقادیر بدون به‌روزرسانی برنامه

آنچه شما نیاز دارید

  • آخرین نسخه اندروید استودیو
  • یک حساب Firebase
  • (توصیه می شود، اما اختیاری) یک دستگاه اندروید فیزیکی برای اجرای برنامه شما
  • دانش پایه جاوا یا کاتلین

2. راه اندازی

(اختیاری) کد نمونه را دانلود کنید

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

برای دانلود تمام کدهای این کد لبه روی دکمه زیر کلیک کنید:

فایل فشرده دانلود شده را باز کنید. با این کار یک پوشه ریشه به نام quickstart-android-master باز می شود.

... یا مخزن GitHub را از خط فرمان کلون کنید.

$ git clone https://github.com/firebase/quickstart-android.git

مخزن شامل چندین پوشه است. ما استفاده خواهیم کرد android_studio_folder.png پوشه پیکربندی

(اختیاری) کد نمونه را وارد کنید

Android Studio را راه اندازی کنید، "Import project" را در صفحه خوش آمد انتخاب کنید. سپس پوشه دانلود شده را باز کرده و آن را انتخاب کنید android_studio_folder.png پوشه پیکربندی سپس روی "باز کردن" کلیک کنید.

5f90353b0b519642.png

ایجاد پروژه اندروید جدید

  1. در Android Studio، پروژه جدید را شروع کنید
  2. Basic Activity را انتخاب کنید
  3. در صفحه "پیکربندی پروژه خود":
  4. پروژه خود را نام ببرید نام بسته و مکان ذخیره به طور خودکار برای شما ایجاد می شود.
  5. زبان: جاوا
  6. حداقل SDK 16

3. Firebase و Firebase Analytics را به پروژه اندروید خود اضافه کنید

یک پروژه Firebase ایجاد کنید

قبل از اینکه بتوانید Firebase را به برنامه Android خود اضافه کنید، باید یک پروژه Firebase برای اتصال به برنامه iOS خود ایجاد کنید. برای کسب اطلاعات بیشتر در مورد پروژه های Firebase، از Understand Firebase Projects دیدن کنید.

  1. در کنسول Firebase، روی افزودن پروژه کلیک کنید، سپس نام پروژه را انتخاب یا وارد کنید. 910158221fe46223.png

اگر یک پروژه Google Cloud Platform (GCP) دارید، می‌توانید پروژه را از منوی کشویی انتخاب کنید تا منابع Firebase را به آن پروژه اضافه کنید.

  1. (اختیاری) اگر در حال ایجاد یک پروژه جدید هستید، می توانید شناسه پروژه را ویرایش کنید.

Firebase به طور خودکار یک شناسه منحصر به فرد را به پروژه Firebase شما اختصاص می دهد. برای آشنایی با نحوه استفاده Firebase از ID پروژه، از Understand Firebase Projects دیدن کنید.

  1. روی Continue کلیک کنید.
  2. Google Analytics را برای پروژه خود راه اندازی کنید، که به شما امکان می دهد با استفاده از هر یک از محصولات Firebase زیر تجربه ای بهینه داشته باشید:
  • Firebase Crashlytics
  • پیش بینی های Firebase
  • Firebase Cloud Messaging
  • Firebase In-App Messaging
  • پیکربندی از راه دور Firebase
  • تست Firebase A/B

هنگامی که از شما خواسته شد، استفاده از یک حساب Google Analytics موجود یا ایجاد یک حساب جدید را انتخاب کنید. اگر تصمیم به ایجاد یک حساب کاربری جدید دارید، مکان گزارش Analytics خود را انتخاب کنید، سپس تنظیمات اشتراک داده و شرایط Google Analytics را برای پروژه خود بپذیرید.

1282a798556779ab.png

48ade68c8de27d2.png

  1. روی ایجاد پروژه (یا افزودن Firebase ، اگر از پروژه GCP موجود استفاده می کنید) کلیک کنید.

Firebase به طور خودکار منابع پروژه Firebase شما را فراهم می کند. پس از تکمیل فرآیند، به صفحه نمای کلی پروژه Firebase خود در کنسول Firebase هدایت خواهید شد.

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

بعد از اینکه یک پروژه Firebase دارید، می توانید برنامه اندروید خود را به آن اضافه کنید.

از Understand Firebase Projects دیدن کنید تا درباره بهترین روش‌ها و ملاحظات برای افزودن برنامه‌ها به پروژه Firebase، از جمله نحوه مدیریت چندین نوع ساخت بیشتر بدانید.

  1. به کنسول Firebase بروید.
  2. در بالای صفحه نمای کلی پروژه، روی نماد Android کلیک کنید تا گردش کار راه اندازی شود. اگر قبلاً برنامه‌ای را به پروژه Firebase خود اضافه کرده‌اید، روی افزودن برنامه کلیک کنید تا گزینه‌های پلتفرم نمایش داده شوند.
  3. نام بسته برنامه خود را در قسمت نام بسته Android وارد کنید.
  4. (اختیاری) نام مستعار برنامه را وارد کنید.
  5. فیلد SHA-1 را خالی بگذارید زیرا SHA-1 برای این پروژه مورد نیاز نیست.
  6. روی ثبت برنامه کلیک کنید.

فایل پیکربندی Firebase را اضافه کنید

در مرحله بعد، از شما خواسته می شود که یک فایل پیکربندی را دانلود کنید که حاوی تمام فراداده های Firebase لازم برای برنامه شما است. برای دریافت فایل پیکربندی Android Firebase ( google-services.json ) روی Download google-services.json کلیک کنید.

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

در فایل Gradle در سطح پروژه خود ( build.gradle )، قوانینی را اضافه کنید تا افزونه خدمات Google Gradle را نیز شامل شود. بررسی کنید که مخزن Maven Google را نیز دارید.

build.gradle در سطح پروژه ( <project>/build.gradle ):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

در فایل Gradle ماژول (سطح برنامه) خود (معمولا app/build.gradle )، افزونه Google Services Gradle را اعمال کنید:

build.gradle سطح برنامه ( <project>/<app-module>/build.gradle ):

اعمال افزونه: 'com.android.application'

// خط زیر را اضافه کنید:

افزونه اعمال کنید: 'com.google.gms.google-services' // افزونه خدمات Google

اندروید {

//...

}

Firebase SDK را به برنامه Android خود اضافه کنید

برای Remote Config، Google Analytics برای هدف‌گیری مشروط نمونه‌های برنامه برای ویژگی‌های کاربر و مخاطبان مورد نیاز است. مطمئن شوید که Google Analytics را در پروژه خود فعال کرده اید.

(این کار قبلاً در نمونه کد شروع سریع انجام شده است)

با استفاده از Firebase Android BoM ، وابستگی کتابخانه Remote Config Android را در فایل Gradle ماژول (سطح برنامه) خود (معمولا app/build.gradle ) اعلام کنید. با استفاده از Firebase Android BoM ، برنامه شما همیشه از نسخه‌های سازگار کتابخانه‌های Firebase Android استفاده می‌کند.

همچنین، به عنوان بخشی از تنظیم Analytics، باید Firebase SDK برای Google Analytics را به برنامه خود اضافه کنید. در بخش وابستگی ها، کد زیر را اضافه کنید:

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

پروژه خود را با فایل های gradle همگام سازی کنید

برای اطمینان از اینکه همه وابستگی‌ها در برنامه شما در دسترس هستند، پروژه خود را با فایل‌های gradle با انتخاب File > Sync Project with Gradle Files همگام‌سازی کنید.

4. اجزای اصلی را برای Remote Config مرور کنید

اکنون قصد داریم مراحل استفاده از Remote Config در یک برنامه را بررسی کنیم. این مراحل قبلاً در کد Quickstart Codelab کامل شده است. لطفاً از این بخش در حین بررسی کد Quickstart Codelab استفاده کنید تا متوجه شوید چه اتفاقی در حال رخ دادن است.

1. Remote Config Singleton Object را دریافت کنید

یک نمونه شی Remote Config دریافت کنید و حداقل فاصله واکشی را تنظیم کنید تا امکان تازه کردن مکرر وجود داشته باشد:

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

شی singleton برای ذخیره مقادیر پارامترهای پیش‌فرض درون برنامه، واکشی مقادیر پارامترهای به‌روزشده از باطن، و کنترل زمانی که مقادیر واکشی شده در دسترس برنامه شما قرار می‌گیرد، استفاده می‌شود.

در طول توسعه، توصیه می شود حداقل فاصله واکشی نسبتاً کم را تنظیم کنید. برای اطلاعات بیشتر Throttling را ببینید.

2. مقادیر پارامترهای پیش فرض درون برنامه را تنظیم کنید

می‌توانید مقادیر پارامترهای پیش‌فرض درون برنامه‌ای را در شی Remote Config تنظیم کنید، به طوری که برنامه شما قبل از اتصال به پشتیبان Remote Config همانطور که می‌خواهید رفتار کند، و اگر مقادیر پیش‌فرض در backend تنظیم نشده باشد، در دسترس باشند.

می توانید مجموعه ای از نام پارامترها و مقادیر پارامترهای پیش فرض را با استفاده از یک شی Map یا یک فایل منبع XML ذخیره شده در پوشه res/xml برنامه خود تعریف کنید. برنامه نمونه راه‌اندازی سریع پیکربندی از راه دور از یک فایل XML برای تعریف نام‌ها و مقادیر پارامترهای پیش‌فرض استفاده می‌کند. در اینجا نحوه ایجاد یک فایل XML برای خودتان آمده است:

  1. یک پوشه xml زیر پوشه res ایجاد کنید.

4b8a2a637a626e94.png

  1. روی پوشه xml که به تازگی ایجاد شده کلیک راست کرده و یک فایل بسازید.

358b4ba740120ece.png

  1. مقادیر پیش فرض را تنظیم کنید. در بخش بعدی، سعی می کنید مقادیر پیش فرض را در فایل XML Quickstart Remote Config تغییر دهید.
  2. مطابق شکل، این مقادیر را با استفاده از setDefaultsAsync(int) به شی Remote Config اضافه کنید:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. مقادیر پارامتر را برای استفاده در برنامه خود دریافت کنید

اکنون می توانید مقادیر پارامتر را از شی Remote Config دریافت کنید. اگر مقادیری را در backend تنظیم کنید، آنها را واکشی کنید و سپس آنها را فعال کنید، این مقادیر برای برنامه شما در دسترس هستند. در غیر این صورت، مقادیر پارامتر درون برنامه را با استفاده از setDefaultsAsync(int) پیکربندی می‌کنید. برای دریافت این مقادیر، روش فهرست شده در زیر را فراخوانی کنید که با نوع داده مورد انتظار برنامه شما مطابقت دارد و کلید پارامتر را به عنوان آرگومان ارائه می دهد:

4. مقادیر را واکشی و فعال کنید

  1. برای واکشی مقادیر پارامتر از باطن Remote Config، متد fetch() را فراخوانی کنید. هر مقداری که در backend تنظیم می کنید در شی Remote Config واکشی و ذخیره می شود.
  2. برای در دسترس قرار دادن مقادیر پارامترهای واکشی شده برای برنامه خود، متد activate() را فراخوانی کنید. برای مواردی که می‌خواهید مقادیر را در یک تماس واکشی و فعال کنید، می‌توانید از یک درخواست fetchAndActivate برای واکشی مقادیر از Remote Config استفاده کنید و آنها را در دسترس برنامه قرار دهید:

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

از آنجایی که این مقادیر پارامتر به روز شده بر رفتار و ظاهر برنامه شما تأثیر می گذارد، باید مقادیر واکشی شده را در زمانی فعال کنید که تجربه یکنواختی را برای کاربر شما تضمین کند، مانند دفعه بعد که کاربر برنامه شما را باز می کند. برای اطلاعات بیشتر و مثال‌ها، به استراتژی‌های بارگیری Remote Config مراجعه کنید.

گاز دادن

اگر یک برنامه در مدت زمان کوتاهی بارها واکشی شود، تماس‌های واکشی قطع می‌شوند و SDK FirebaseRemoteConfigFetchThrottledException را برمی‌گرداند. قبل از SDK نسخه 17.0.0، حد مجاز 5 درخواست واکشی در یک پنجره 60 دقیقه ای بود (نسخه های جدید محدودیت های مجاز بیشتری دارند).

در طول توسعه برنامه، ممکن است بخواهید پیکربندی‌ها را به‌طور مکرر واکشی و فعال کنید (در هر ساعت چند بار) تا به شما اجازه دهد در حین توسعه و آزمایش برنامه‌تان به سرعت تکرار کنید. برای تطبیق تکرار سریع در پروژه‌ای با حداکثر 10 توسعه‌دهنده، می‌توانید به طور موقت یک شی FirebaseRemoteConfigSettings را با حداقل فاصله واکشی کم ( setMinimumFetchIntervalInSeconds ) در برنامه خود تنظیم کنید.

حداقل فاصله واکشی پیش‌فرض برای Remote Config 12 ساعت است، به این معنی که پیکربندی‌ها بیش از یک بار در یک پنجره 12 ساعته از پشتیبان دریافت نمی‌شوند، صرف نظر از اینکه واقعاً چند تماس واکشی انجام شده است. به طور خاص، حداقل فاصله واکشی به ترتیب زیر تعیین می شود:

  1. پارامتر در fetch(long)
  2. پارامتر در FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. مقدار پیش فرض 12 ساعت

برای تنظیم حداقل فاصله واکشی روی یک مقدار سفارشی، از FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) استفاده کنید.

5. رفتار برنامه را با Remote Config تغییر دهید

پارامترهای پیش فرض درون برنامه را تغییر دهید

res/xml/remote_config_defaults.xml را باز کنید و مقادیر پیش فرض را به چیز دیگری تغییر دهید.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

تغییر مقدار پیش‌فرض درون برنامه را تأیید کنید

  1. پروژه را در یک شبیه ساز یا با استفاده از یک دستگاه آزمایشی برای تأیید رفتار اجرا کنید.
  2. روی Open یا در نسخه جاوا یا Kotlin کلیک کنید.

c1582b989c25ced.png

  1. پیام خوشامدگویی را در نمای اصلی مرور کنید.

4c838bf5a629d5b8.png

مقادیر پارامترها را در Remote Config تنظیم کنید

حالا بیایید ارسال مقادیر را از طریق Remote Config آزمایش کنیم. با استفاده از کنسول Firebase یا Remote Config Backend API ، می‌توانید مقادیر پیش‌فرض سمت سرور جدیدی ایجاد کنید که مقادیر درون‌برنامه را مطابق با منطق شرطی دلخواه یا هدف‌گذاری کاربر لغو می‌کند. این بخش مراحل کنسول Firebase برای ایجاد این مقادیر را توضیح می دهد.

  1. کنسول Firebase را باز کنید، پروژه خود را باز کنید.
  2. Remote Config را از منوی سمت چپ در بخش Engage انتخاب کنید تا داشبورد Remote Config را مشاهده کنید.
  3. در قسمت Add a parameter Parameter key. در قسمت Default value هر متنی را که می خواهید اضافه کنید. سپس روی Add Parameter کلیک کنید. برای این کد لبه، از کلیدهای پارامتر موجود در فایل res/xml/remote_config_defaults.xml استفاده خواهیم کرد. برای جزئیات به جدول زیر مراجعه کنید:

کلید پارامتر

مقدار پیش‌فرض ( remote_config_defaults.xml )

توضیحات

loading_phrase

در حال واکشی پیکربندی...

رشته؛ هنگام واکشی مقادیر Remote Config نمایش داده می شود.

Welcome_message_caps

نادرست

بولی؛ اگر درست است، welcome_message را به همه حروف بزرگ تغییر می دهد

Welcome_message

به برنامه عالی من خوش آمدید!

رشته؛ پیام خوش آمد گویی

نمونه اسکرین شات:

28fa48f18da43002.png

  1. پس از اتمام افزودن پارامترها، روی "انتشار تغییرات" کلیک کنید.
  2. دوباره برنامه خود را روی یک شبیه ساز یا یک دستگاه اجرا کنید و این بار روی دکمه "واگیری از راه دور خوش آمدید" کلیک کنید.

cfe900477549adb7.png

  1. پیام خوش آمد گویی باید بر اساس پارامتر و مقادیر Remote Config شما به روز شود!

6. تبریک می گویم

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