بدء استخدام ميزة "التحقّق من التطبيقات" مع مقدّم خدمة مخصّص على Android

توضّح لك هذه الصفحة كيفية تفعيل ميزة "التحقّق من التطبيقات" في أحد تطبيقات Android، باستخدام موفّر خدمة "التحقّق من التطبيقات" المخصّص. عند تفعيل فحص التطبيقات، تسهم في ضمان وصول تطبيقك فقط إلى موارد Firebase لمشروعك.

إذا أردت استخدام ميزة "فحص التطبيق" مع موفِّر Play Integrity التلقائي، يُرجى الاطّلاع على تفعيل ميزة "فحص التطبيق" باستخدام ميزة Play Integrity على Android.

قبل البدء

1- إضافة مكتبة فحص التطبيقات إلى تطبيقك

في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة "فحص التطبيقات" لنظام التشغيل Android. ننصح باستخدام بنود سياسة Android في Firebase للتحكّم في نُسَخ المكتبة.

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

    // Add the dependency for the App Check library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-appcheck")
}

باستخدام أداة إدارة قوائم التشغيل Android في Firebase، سيستخدم تطبيقك دائمًا الإصدارات المتوافقة من مكتبات Android في Firebase.

(بديل) إضافة ملحقات مكتبة Firebase بدون استخدام BoM

إذا اخترت عدم استخدام قائمة العناصر في Firebase، يجب تحديد كل إصدار من مكتبة Firebase في سطر الاعتمادية الخاص به.

يُرجى العِلم أنّه إذا كنت تستخدم مكتبات متعددة لمنصة Firebase في تطبيقك، ننصحك بشدّة باستخدام BoM لإدارة إصدارات المكتبة، ما يضمن توافق جميع الإصدارات.

dependencies {
    // Add the dependency for the App Check library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-appcheck:18.0.0")
}
هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من تشرين الأول (أكتوبر) 2023 (الإصدار 32.5.0 من Firebase)، أصبح بإمكان مطوّري لغة Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمعرفة التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).

2- تنفيذ واجهات "فحص التطبيقات"

عليك أولاً إنشاء صفوف تستخدم الواجهتين AppCheckProvider وAppCheckProviderFactory.

يجب أن تتضمن فئة AppCheckProvider طريقة getToken()، التي تجمع أي معلومات يطلبها موفِّر خدمة "فحص التطبيق" المخصَّص كإثبات للمصداقية، وترسلها إلى خدمة الحصول على الرموز المميّزة مقابل الحصول على رمز مميَّز لـ "فحص التطبيق". تتعامل حزمة تطوير البرامج (SDK) لفحص التطبيقات مع التخزين المؤقت للرموز المميّزة، لذا احرص دائمًا على الحصول على رمز مميّز جديد عند تنفيذ getToken().

Kotlin+KTX

class YourCustomAppCheckToken(
    private val token: String,
    private val expiration: Long,
) : AppCheckToken() {
    override fun getToken(): String = token
    override fun getExpireTimeMillis(): Long = expiration
}

class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider {
    override fun getToken(): Task<AppCheckToken> {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        val expMillis = expirationFromServer * 1000L - 60000L

        // Create AppCheckToken object.
        val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis)
        return Tasks.forResult(appCheckToken)
    }
}

Java

public class YourCustomAppCheckToken extends AppCheckToken {
    private String token;
    private long expiration;

    YourCustomAppCheckToken(String token, long expiration) {
        this.token = token;
        this.expiration = expiration;
    }

    @NonNull
    @Override
    public String getToken() {
        return token;
    }

    @Override
    public long getExpireTimeMillis() {
        return expiration;
    }
}

public class YourCustomAppCheckProvider implements AppCheckProvider {
    public YourCustomAppCheckProvider(FirebaseApp firebaseApp) {
        // ...
    }

    @NonNull
    @Override
    public Task<AppCheckToken> getToken() {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        long expMillis = expirationFromServer * 1000L - 60000L;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                new YourCustomAppCheckToken(tokenFromServer, expMillis);

        return Tasks.forResult(appCheckToken);
    }
}

عليك أيضًا تنفيذ فئة AppCheckProviderFactory لإنشاء مثيلات لعملية تنفيذ AppCheckProvider:

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    override fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
    @NonNull
    @Override
    public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) {
        // Create and return an AppCheckProvider object.
        return new YourCustomAppCheckProvider(firebaseApp);
    }
}

3- إعداد فحص التطبيقات

أضِف رمز الإعداد التالي إلى تطبيقك كي يتم تشغيله قبل استخدام أي حِزم تطوير برامج (SDK) أخرى لمنصّة Firebase:

Kotlin+KTX

Firebase.initialize(context)
Firebase.appCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory(),
)

Java

FirebaseApp.initializeApp(/*context=*/ context);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        new YourCustomAppCheckProviderFactory());

الخطوات اللاحقة

بعد تثبيت مكتبة "فحص التطبيقات" في تطبيقك، ابدأ في توزيع التطبيق المحدَّث على المستخدمين.

سيبدأ تطبيق العميل المحدّث في إرسال رموز "فحص التطبيق" مع كل طلب يتم تقديمه إلى Firebase، إلا أنّ منتجات Firebase لن تتطلب أن تكون الرموز المميزة صالحة إلى أن يتم تفعيل التنفيذ في قسم "فحص التطبيق" في وحدة تحكُّم Firebase.

مراقبة المقاييس وتفعيل التنفيذ

ومع ذلك، قبل تفعيل التنفيذ، يجب التأكّد من أنّ ذلك لن يعطّل المستخدمين الشرعيين الحاليين. من ناحية أخرى، إذا لاحظت استخدامًا مريبًا لموارد تطبيقك، ننصحك بتفعيل هذه الميزة في وقت أقرب.

للمساعدة في اتخاذ هذا القرار، يمكنك الاطّلاع على مقاييس "فحص التطبيق" للخدمات التي تستخدمها:

تفعيل فرض فحص التطبيقات

بعد معرفة تأثير فحص التطبيقات على المستخدمين، وعند استعدادك للمتابعة، يمكنك تفعيل تنفيذ ميزة "فحص التطبيق":

استخدام ميزة "فحص التطبيقات" في بيئات تصحيح الأخطاء

بعد تسجيل تطبيقك في ميزة "فحص التطبيقات"، إذا أردت تشغيل تطبيقك في بيئة لا تصنّفها عادةً أداة "فحص التطبيقات" على أنّها صالحة، مثل المحاكي أثناء التطوير أو من بيئة تكامل مستمر (CI)، يمكنك إنشاء إصدار لتصحيح أخطاء تطبيقك ويستخدِم موفِّر تصحيح أخطاء التطبيق بدلاً من موفّر تصديق حقيقي.

راجِع مقالة استخدام ميزة "فحص التطبيق" مع موفِّر تصحيح الأخطاء على نظام Android.