Yanıtları güvenilir bir sunucu kullanarak zaten doğruluyorsanız SafetyNet Attestation API'den Play Integrity API'ye geçiş süreci oldukça kolaydır. Play Integrity API, Lisanslama Doğrulama Kitaplığı (LVL) tarafından gerçekleştirilenler gibi AIDL aracılığıyla doğrudan Play Store uygulamasından gerçekleştirilen Uygulama Lisanslama kontrollerinin yerine de kullanılabilir. Gerekli değişikliklerin çoğu, Play Integrity yanıt jetonunu okuyup analiz etmesi gereken güvenilir sunucu tarafında olacaktır. Taşıma sırasında, henüz güncellenmemiş eski istemcileri desteklemek için hem uygulamanın hem de sunucunun aynı anda her iki API'yi de desteklemesi gerektiğini unutmayın.
Uygulamanıza SafetyNet Attestation API için kota sınırları artırıldıysa Play Integrity API için atanan kullanım katmanını ve gerekirse yükseltilmiş katmana geçme isteğinde bulunmanız gerekir.
Play Integrity API'yi desteklemek için aşağıdaki değişiklikler gereklidir:
Android İstemcisi:
- Kodun, doğru biçimlendirilmiş tek seferlik rastgele sayıyı
IntegrityTokenRequest
oluşturucuya ilettiğinden emin olun:String
(bayt dizisi yerine)- URL için güvenli
- Base64 olarak kodlanmış ve sarmalanmamıştır
- En az 16 karakter
- Maksimum 500 karakter
- Yeniden deneme mantığını inceleyin ve uygulamanın hataları uygun şekilde işlediğinden emin olun.
- Güvenilir sunucuya gönderilen yanıt verilerinin SafetyNet Attestation API yanıtları ile Play Integrity API yanıtları arasında ayrım yapmaya olanak tanıdığından emin olun.
Güvenilir Sunucu:
- Tek seferlik oluşturma mantığını inceleyip Play Integrity API gereksinimlerini karşıladığından emin olun.
- Sunucu kodunun SafetyNet Attestation API yanıtlarını ve Play Integrity API yanıtlarını ayırt edebildiğinden emin olun. Kodun bu yanıtları düzgün bir şekilde ayrıştırdığından ve doğruladığından emin olun.
- Play Integrity API yanıtlarını doğrulama ve ayrıştırma mantığını ekleyin.
- Yeni Play Integrity API yanıtı ek ayrıntılar sağladığından karar verme mantığının ve istemci cihazlarına geri gönderilen geri bildirim verilerinin iyileştirilmesi gerekebilir. Daha fazla bilgi için bu konudaki API Yanıt Eşleme bölümüne bakın.
Nonce kodlaması
Bütünlükle ilgili tek seferlik rastgele sayı, Play Integrity API'ye Base64 kodlu, URL için güvenli ve sarmalanmamış String
olarak iletilmelidir. Bu biçim, byte[]
gerektiren SafetyNet Attestation API'den farklıdır.
- "URL için güvenli", Base64'ün "URL ve dosya adı güvenli" varyantının kullanılması anlamına gelir (RFC 4648 bölüm 5'e bakın). Burada "+" ve "/" yerine "-" ve "_" kullanılır. Base64 kodlaması hakkında daha fazla bilgi için RFC 4648'e bakın.
- "no-wrap", tüm satır sonlandırıcılarının atlanması anlamına gelir. Bu, çıktının tek uzun bir satır olacağı anlamına gelir.
.setNonce(Base64.encodeToString(NONCE_BYTES,
Base64.URL_SAFE | Base64.NO_WRAP))
Ayrıca, tek seferlik oluşturma işleminin Play Integrity API yönergelerine uygun olduğundan emin olun.
API Yanıt Eşlemesi
Aşağıdaki tabloda, SafetyNet Attestation API alanları Play Integrity API eşdeğerleriyle eşleştirilmektedir.
SafetyNet Attestation API | Play Integrity API | Notes | |
timestampMs |
requestDetails.timestampMillis
|
||
nonce |
requestDetails.nonce |
||
apkPackageName |
appIntegrity.packageName
|
||
apkCertificateDigestSha256
|
appIntegrity.certificateSha256Digest
|
appRecognitionVerdict öğesinin PLAY_RECOGNIZED olarak ayarlandığından emin olun
|
|
ctsProfileMatch |
deviceIntegrity.deviceRecognitionVerdict altında birleştirildi
|
||
basicIntegrity |
deviceIntegrity.deviceRecognitionVerdict altında birleştirildi
|
||
evaluationType |
deviceIntegrity.deviceRecognitionVerdict altında birleştirildi
|
||
advice |
Not available |
||
error
|
Not available
|
Cihaz bütünlüğü etiketleri listesi boş olur. |
Cihaz bütünlüğü kararı eşleme
SafetyNet Onay API | Play Integrity API | ||
ctsProfileMatch
|
basicIntegrity
|
evaluationType
|
deviceRecognitionVerdict
|
FALSE |
FALSE |
Etiket yok | |
FALSE |
TRUE |
MEETS_BASIC_INTEGRITY |
|
TRUE |
FALSE |
Etiket yok | |
TRUE |
TRUE |
BASIC
|
MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY
|
TRUE |
TRUE |
HARDWARE_BACKED |
MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY,
MEETS_BASIC_INTEGRITY
|
Uygulamanız karmaşık bir yaptırım stratejisi kullanıyorsa ve olası tüm değerlere ihtiyaç duyuyorsa cihaz bütünlüğü yanıtları grubunu yapılandırmanız gerekebilir.
Play Integrity API Yeniden Deneme Mantığı
Uygulama, belirli hata kodlarında API çağrılarını yeniden denemelidir. Tüm hata kodlarını incelediğinizden ve uygulamanın gerektiğinde eksponansiyel geri yükleme ile yeniden deneme yaptığından emin olun. API'ye cihaz ve uygulama bütünlüğünü değerlendirmek için yeterli süre sağlamak için minimum gecikmenin en az 5 saniye olduğundan ve katlanarak arttığından (5 sn, 10 sn, 20 sn, 40 sn) emin olun.
İsteğe bağlı Uygulama Lisanslama API'sinin değişimi
Uygulama Lisanslama API'sini kullanıyorsanız Play Integrity API'yi kullanmak için isteğe bağlı olarak geçiş yapabilirsiniz. Play Integrity API jetonu, uygulamanın lisanslama bilgilerini içerir. SafetyNet Attestation API taşıma işleminde olduğu gibi, bazı cihazların, uygulamanın eski bir sürümünü saklamasını bekleyebilirsiniz. Güvenilir sunucunuz hem Uygulama Lisanslama API'sini hem de Play Integrity API yanıtlarını işleyebilir.
Kullanım tamamen kapatılana kadar yanıt alın
Geçiş tarihine kadar (31 Ocak 2024) Play Integrity API'ye geçiş yapmadıysanız veya SafetyNet Onayı'nı kaldırmadıysanız ek süre talep etmek için bu formu doldurabilirsiniz. Ek süre için onay verilirse uygulamanız, hizmetin tamamen kullanımdan kaldırılacağı son tarihe kadar (31 Ocak 2025) SafetyNet Attestation'dan yanıt almaya devam edecektir.