Bu sayfada, entegrasyon kararları ile ilgili sorunların nasıl ele alınacağı açıklanmaktadır.
Bütünlük jetonu istendiğinde kullanıcıya bir Google Play iletişim kutusu gösterebilirsiniz. Entegrasyon kararıyla ilgili bir veya daha fazla sorun olduğunda iletişim kutusunu görüntüleyebilirsiniz. İletişim kutusu, uygulamanızın üst kısmında görüntülenir ve kullanıcılardan sorunun nedenini çözmelerini ister. İletişim kutusu kapatıldıktan sonra Integrity API'ye yapılan başka bir istekle sorunun düzeltildiğini doğrulayabilirsiniz.
Bütünlük iletişim kutuları
GET_LICENSED (Tür Kodu 1)
Karar sorunu
appLicensingVerdict == "UNLICENSED"
olduğunda. Bu, kullanıcı hesabının lisansının
kaldırıldığı anlamına gelir. Diğer bir deyişle, kullanıcı uygulamayı Google Play'den yüklememiş veya satın almamıştır.
Çözüm
Kullanıcının uygulamanızı Google Play'den indirmesini istemek için GET_LICENSED
iletişim kutusunu gösterebilirsiniz. Kullanıcı kabul ederse kullanıcı hesabı lisanslı
(appLicensingVerdict == "LICENSED"
) olur. Uygulama kullanıcının Google Play kitaplığına eklenir ve Google Play sizin adınıza uygulama güncellemeleri gönderebilir.
Örnek kullanıcı deneyimi
Bütünlük isteğinde bulunma iletişim kutusu
İstemci bütünlük jetonu istediğinde StandardIntegrityToken (Standard API) ve IntegrityTokenResponse'ta (Klasik API) sunulan yöntemi kullanabilirsiniz: showDialog(Activity activity, int integrityDialogTypeCode)
.
Aşağıdaki adımlarda, GET_LICENSED iletişim kutusunu göstermek için Play Integrity API'yi nasıl kullanabileceğiniz özetlenmektedir:
Uygulamanızdan 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ını kontrol edin. Bu simge aşağıdaki gibi görünebilir:// Licensing issue { ... accountDetails: { appLicensingVerdict: "UNLICENSED" } }
Jeton
appLicensingVerdict: "UNLICENSED"
içeriyorsa uygulama istemcinize yanıt vererek lisanslama iletişim kutusunun gösterilmesini isteyin: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, sunucunuzdan alınan istenen kodu kullanarak
showDialog
numaralı telefonu arayın: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: Task<Int> = 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. Task<Integer> integrityDialogResponseCode = tokenResponse.showDialog(activity, showDialogType); // Handle response code, call the Integrity API again to confirm that // verdicts have been resolved. }
İletişim kutusu, sağlanan etkinliğin üstünde gösterilir. Kullanıcı iletişim kutusunu kapattığında Görev, bir yanıt koduyla tamamlanır.
(İsteğe bağlı) Başka iletişim kutuları görüntülemek için başka bir jeton isteyin. Standart istekler yaparsanız yeni bir karar almak için jeton sağlayıcıyı tekrar çalıştırmanız gerekir.