Bu sayfada, entegrasyon kararlarıyla ilgili sorunların nasıl ele alınacağı açıklanmaktadır.
Bütünlük jetonu istendiğinde bir Google Cloud Search Console'u Kullanıcıya yönelik iletişim kutusunu oynat. İletişim kutusunu, bir veya daha fazla bağlantı olduğunda sorunları gidermeye çalışır. İletişim, uygulamanızın üst tarafında gösterilir. ve kullanıcılardan sorunun nedenini çözmelerini ister. İletişim kutusu kapatıldığında Integrity'ye bir istek daha göndererek sorunun düzeltildiğini doğrulayabilirsiniz API'ye gidin.
Bütünlük iletişim kutuları
GET_LICENSED (Tür Kodu 1)
Sonuç sorunu
appLicensingVerdict == "UNLICENSED"
olduğunda. Bu, kullanıcı hesabının
lisanssız. Yani uygulamayı Google Play'den yüklememiş veya satın almamıştır.
Çözüm
Kullanıcının uygulamanızı şuradan almasını istemek için GET_LICENSED
iletişim kutusunu gösterebilirsiniz:
Google Play Kullanıcı kabul ederse kullanıcının hesabına lisans verilir
(appLicensingVerdict == "LICENSED"
). Uygulama, kullanıcının Google
Play kitaplığı ve Google Play sizin adınıza uygulama güncellemeleri gönderebilir.
Örnek kullanıcı deneyimi
CLOSE_UNKNOWN_ACCESS_RISK (Kod 2'yi yazın)
Sonuç sorunu
environmentDetails.appAccessRiskVerdict.appsDetected
şunu içerdiğinde:
"UNKNOWN_CAPTURING"
veya "UNKNOWN_CONTROLLING"
, bilinmeyen öğe olduğu anlamına gelir
cihazda çalışan, ekranı kaydedebilecek veya
cihazı kontrol ediyor.
Çözüm
CLOSE_UNKNOWN_ACCESS_RISK
iletişim kutusunu, kullanıcıdan kapatmasını istemek için gösterebilirsiniz
ekranı kaydedebilecek veya cihazı kontrol edebilecek tüm bilinmeyen uygulamalar.
Kullanıcı Close all
düğmesine dokunursa bu tür uygulamaların tümü kapatılır.
Örnek kullanıcı deneyimi
CLOSE_ALL_ACCESS_RISK (Tür Kodu 3)
Sonuç sorunu
environmentDetails.appAccessRiskVerdict.appsDetected
şunlardan herhangi birini içerdiğinde
"KNOWN_CAPTURING"
, "KNOWN_CONTROLLING"
,"UNKNOWN_CAPTURING"
veya
"UNKNOWN_CONTROLLING"
, cihazda çalışan uygulamalar olduğu anlamına geliyor.
ekranı kaydediyor veya cihazı kontrol ediyor olabilir.
Çözüm
CLOSE_ALL_ACCESS_RISK
iletişim kutusunu, kullanıcıdan tüm içeriği kapatmasını istemek için gösterebilirsiniz
ekranı kaydedebilecek veya cihazı kontrol edebilecek uygulamalar.
Kullanıcı Close all
düğmesine dokunursa bu tür uygulamaların tümü
olanak tanır.
Örnek kullanıcı deneyimi
Bütünlük isteme iletişim kutusu
İstemci bir bütünlük jetonu istediğinde aşağıdaki yöntemi kullanabilirsiniz:
StandardIntegrityToken (Standard API) ve
IntegrityTokenResponse (Klasik API):
showDialog(Activity activity, int integrityDialogTypeCode)
.
Aşağıdaki adımlarda, kullanıcıların uygulamanızı bulabilmeleri için Play Integrity API'yi GET_LICENSED iletişim kutusu:
Uygulamanızdan bir bütünlük jetonu isteyin ve jetonu sunucunuza gönderin. Standart veya Klasik isteği kullanabilirsiniz.
Kotlin
// Request an integrity token val tokenResponse: StandardIntegrityToken = requestIntegrityToken() // Send token to app server and get response on what to do next val yourServerResponse: YourServerResponse = sendToServer(tokenResponse.token())
Java
// Request an integrity token StandardIntegrityToken tokenResponse = requestIntegrityToken(); // Send token to app server and get response on what to do next YourServerResponse yourServerResponse = sendToServer(tokenResponse.token());
Sunucunuzda bütünlük jetonunun şifresini çözün ve
appLicensingVerdict
alanı boş bırakılamaz. Aşağıdaki gibi görünebilir:// Licensing issue { ... accountDetails: { appLicensingVerdict: "UNLICENSED" } }
Jeton
appLicensingVerdict: "UNLICENSED"
içeriyorsa uygulamanıza yanıt verin lisans iletişim kutusunu göstermesini istiyorsanız:Kotlin
private fun getDialogTypeCode(integrityToken: String): Int{ // Get licensing verdict from decrypted and verified integritytoken val licensingVerdict: String = getLicensingVerdictFromDecryptedToken(integrityToken) return if (licensingVerdict == "UNLICENSED") { 1 // GET_LICENSED } else 0 }
Java
private int getDialogTypeCode(String integrityToken) { // Get licensing verdict from decrypted and verified integrityToken String licensingVerdict = getLicensingVerdictFromDecryptedToken(integrityToken); if (licensingVerdict.equals("UNLICENSED")) { return 1; // GET_LICENSED } return 0; }
Uygulamanızda,
showDialog
sunucu:Kotlin
// Show dialog as indicated by the server val showDialogType: Int? = yourServerResponse.integrityDialogTypeCode() if (showDialogType != null) { // Call showDialog with type code, the dialog will be shown on top of the // provided activity and complete when the dialog is closed. val integrityDialogResponseCode: TaskI<nt >= tokenResponse.showDialog(activity, showDialogType) // Handle response code, call the Integrity API again to confirm that // verdicts have been resolved. }
Java
// Show dialog as indicated by the server @Nullable Integer showDialogType = yourServerResponse.integrityDialogTypeCode(); if (showDialogType != null) { // Call showDialog with type code, the dialog will be shown on top of the // provided activity and complete when the dialog is closed. TaskI<nteger >integrityDialogResponseCode = tokenResponse.showDialog(activity, showDialogType); // Handle response code, call the Integrity API again to confirm that // verdicts have been resolved. }
İletişim, sağlanan etkinliğin üzerinde gösterilir. Kullanıcı iletişim kutusunu kapattığınızda Görev, bir yanıt koduyla tamamlanır.
(İsteğe bağlı) Diğer iletişim kutularını görüntülemek için başka bir jeton isteyin. Bir bir istek varsa yeni bir karar almak için jeton sağlayıcıya tekrar gönderin.