Android'de özel bir sağlayıcıyla Uygulama Kontrolü'nü kullanmaya başlayın

Bu sayfa, özel Uygulama Kontrolü sağlayıcınızı kullanarak bir Android uygulamasında Uygulama Kontrolü'nü nasıl etkinleştireceğinizi gösterir. Uygulama Kontrolü'nü etkinleştirdiğinizde projenizin Firebase kaynaklarına yalnızca uygulamanızın erişebilmesini sağlamaya yardımcı olursunuz.

Uygulama Denetimini varsayılan Play Integrity sağlayıcısıyla kullanmak istiyorsanız Android'de Play Integrity ile Uygulama Denetimini Etkinleştirme konusuna bakın.

Sen başlamadan önce

1. Uygulama Kontrolü kitaplığını uygulamanıza ekleyin

Modülünüzde (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle ), Uygulama Kontrolü bağımlılığını ekleyin Android için kütüphane. Kitaplık sürümlerini kontrol etmek için Firebase Android BoM'yi kullanmanızı öneririz.

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

    // 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")
}

Firebase Android BoM'yi kullandığınızda uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

(Alternatif) BoM'yi kullanmadan Firebase kitaplığı bağımlılıklarını ekleyin

Firebase BoM'yi kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü bağımlılık satırında belirtmeniz gerekir.

Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlayan BoM'yi kullanmanızı önemle tavsiye ederiz.

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:17.1.2")
}
Kotlin'e özgü bir kütüphane modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kütüphane modülüne güvenebilecekler (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).

2. Uygulama Kontrolü arayüzlerini uygulayın

Öncelikle AppCheckProvider ve AppCheckProviderFactory arayüzlerini uygulayan sınıflar oluşturmanız gerekir.

AppCheckProvider sınıfınızın, özel Uygulama Kontrolü sağlayıcınızın orijinallik kanıtı olarak ihtiyaç duyduğu her türlü bilgiyi toplayan ve bunu bir Uygulama Kontrolü jetonu karşılığında jeton edinme hizmetinize gönderen bir getToken() yöntemine sahip olması gerekir. Uygulama Kontrolü SDK'sı belirteç önbelleğe almayı yönetir, bu nedenle getToken() uygulamanızda her zaman yeni bir belirteç alın.

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);
    }
}

Ayrıca, AppCheckProvider uygulamanızın örneklerini oluşturan bir AppCheckProviderFactory sınıfını uygulayın:

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. Uygulama Kontrolünü Başlatın

Diğer Firebase SDK'larını kullanmadan önce çalışması için aşağıdaki başlatma kodunu uygulamanıza ekleyin:

Kotlin+KTX

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

Java

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

Sonraki adımlar

Uygulama Kontrolü kitaplığı uygulamanıza yüklendikten sonra güncellenen uygulamayı kullanıcılarınıza dağıtmaya başlayın.

Güncellenen istemci uygulaması, Firebase'e yaptığı her istekle birlikte Uygulama Kontrolü jetonları göndermeye başlayacaktır, ancak Firebase ürünleri, Firebase konsolunun Uygulama Kontrolü bölümünde zorunlu kılmayı etkinleştirene kadar jetonların geçerli olmasını gerektirmeyecektir.

Metrikleri izleyin ve uygulamayı etkinleştirin

Ancak yaptırımı etkinleştirmeden önce, bunu yapmanın mevcut meşru kullanıcılarınızı aksatmayacağından emin olmalısınız. Öte yandan, uygulama kaynaklarınızın şüpheli bir şekilde kullanıldığını görüyorsanız yaptırımı daha erken etkinleştirmek isteyebilirsiniz.

Bu kararı vermenize yardımcı olması için kullandığınız hizmetlere ilişkin Uygulama Kontrolü metriklerine bakabilirsiniz:

Uygulama Kontrolü yaptırımını etkinleştir

Uygulama Kontrolü'nün kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda Uygulama Kontrolü yaptırımını etkinleştirebilirsiniz:

Hata ayıklama ortamlarında Uygulama Kontrolü'nü kullanın

Uygulamanızı Uygulama Kontrolü için kaydettirdikten sonra uygulamanızı, geliştirme sırasındaki bir öykünücü gibi Uygulama Kontrolü'nün normalde geçerli olarak sınıflandırmayacağı bir ortamda veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız, şunları yapabilirsiniz: Uygulamanızın, gerçek bir doğrulama sağlayıcısı yerine Uygulama Denetimi hata ayıklama sağlayıcısını kullanan bir hata ayıklama yapısı oluşturun.

Bkz. Android'de hata ayıklama sağlayıcısıyla Uygulama Kontrolü'nü kullanma .