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

۱. مقدمه

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

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

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

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

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

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

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

61f12f33d2ac3133.png

آنچه یاد خواهید گرفت

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

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

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

۲. آماده شدن

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

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

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

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

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

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

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

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

اندروید استودیو را اجرا کنید، در صفحه خوشامدگویی گزینه "وارد کردن پروژه" را انتخاب کنید. سپس پوشه دانلود شده را باز کرده و ... را انتخاب کنید. پوشه_اندروید_استودیو.png پوشه پیکربندی . سپس روی "باز کردن" کلیک کنید.

5f90353b0b519642.png

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

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

۳. فایربیس و فایربیس آنالیتیکس را به پروژه اندروید خود اضافه کنید

ایجاد یک پروژه فایربیس

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

  1. در کنسول Firebase، روی Add project کلیک کنید، سپس یک نام پروژه انتخاب یا وارد کنید. ۹۱۰۱۵۸۲۱fe۴۶۲۲۳.png

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

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

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

  1. روی ادامه کلیک کنید.
  2. گوگل آنالیتیکس را برای پروژه خود تنظیم کنید، که به شما امکان می‌دهد با استفاده از هر یک از محصولات فایربیس زیر، تجربه بهینه‌ای داشته باشید:
  • فایربیس، کرش‌لایتیکز
  • پیش‌بینی‌های فایربیس
  • پیام‌رسانی ابری فایربیس
  • پیام‌رسانی درون‌برنامه‌ای فایربیس
  • پیکربندی از راه دور فایربیس
  • تست A/B فایربیس

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

1282a798556779ab.png

48ade68c8de27d2.png

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

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

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

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

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

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

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

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

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

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

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' // افزونه سرویس‌های گوگل

اندروید {

// ...

}

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

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

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

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

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

برنامه/ساخت.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 همگام‌سازی کنید.

۴. اجزای اصلی Remote Config را بررسی کنید

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

۱. دریافت شیء Singleton پیکربندی از راه دور

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

MainActivity.java

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

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

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

۲. تنظیم مقادیر پیش‌فرض پارامترها در برنامه

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

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

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

4b8a2a637a626e94.png

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

358b4ba740120ece.png

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

MainActivity.java

‎mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);‎‏

۳. دریافت مقادیر پارامترها برای استفاده در برنامه‌تان

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

۴. دریافت و فعال‌سازی مقادیر

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

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 مراجعه کنید.

تنظیم سرعت

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

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

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

  1. پارامتر در fetch(long)
  2. پارامتر موجود در FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. مقدار پیش‌فرض ۱۲ ساعت

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

۵. رفتار برنامه را با 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 در نسخه جاوا یا کاتلین کلیک کنید.

c1582b989c25ced.png

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

4c838bf5a629d5b8.png

تنظیم مقادیر پارامترها در بخش تنظیمات از راه دور

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

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

کلید پارامتر

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

توضیحات

بارگذاری_عبارت

دریافت پیکربندی...

رشته؛ هنگام دریافت مقادیر پیکربندی از راه دور نمایش داده می‌شود.

پیام_خوش_آمدگویی_کلمات_پیام

نادرست

بولی؛ اگر درست باشد، welcome_message را به حروف بزرگ تبدیل می‌کند.

پیام_خوشامدگویی

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

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

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

۲۸fa48f18da43002.png

  1. وقتی اضافه کردن پارامترها تمام شد، روی «انتشار تغییرات» کلیک کنید.
  2. برنامه خود را دوباره روی یک شبیه‌ساز یا دستگاه اجرا کنید و این بار روی دکمه "Fetch Remote Welcome" کلیک کنید.

cfe900477549adb7.png

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

۶. تبریک

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