LVL Sınıfları ve Arayüzleri
Tablo 1'de, Lisans Doğrulama'daki tüm kaynak dosyalar listelenmektedir
Kitaplık (LVL), Android SDK aracılığıyla kullanılabilir. Tüm dosyalar
com.android.vending.licensing
paketi.
Kategori | Ad | Açıklama |
---|---|---|
Lisans kontrolü ve sonucu | Lisans Denetleyicisi | Lisans kontrolü başlatmak için örneklendirdiğiniz (veya alt sınıf) sınıflar. |
LisansCheckerCallback | Lisans kontrolünün sonucunu işlemek için uyguladığınız arayüz. | |
Politika | Politika | izin verilip verilmeyeceğine karar vermek için uyguladığınız lisans yanıtına göre uygulamaya erişimi. |
ServerManagedPolicy | Varsayılan Policy uygulaması.
lisans verilerinin yerel olarak depolanmasını, lisans geçerliliğini, lisans geçerliliğini,
yeniden dene. |
|
Katı Politika | Alternatif Policy uygulaması. Doğrudan bağlantıya göre lisanslamayı zorunlu kılar
yalnızca sunucudan lisans yanıtı gönderilir. Önbelleğe alınmaz veya yeniden deneme isteğinde bulunulamaz. |
|
Veri kod karartma (isteğe bağlı) |
Obfuscator | Policy kullanıyorsanız (ör.
ServerManagedPolicy) kullanır.
Yazılan verileri kodlamak ve kodunu çözmek için kod karartma algoritması uygular veya
okuyun. |
AESObfuscator | AES şifrelemesi/şifre çözme kullanan varsayılan Obfuscator uygulaması kodu karartmak/karartmak için bir algoritma kullanır. | |
Cihaz sınırlaması (isteğe bağlı) |
DeviceLimiter | Bir belirli bir cihaza yönlendirebilirsiniz. LicenseValidator tarafından çağrıldı. Uygulama DeviceLimiter, bir tarayıcı sınırı gerektirdiğinden çoğu uygulama için önerilmez veya kullanıcının lisanslı uygulamalara erişimi kaybetmesine neden olabilir. tasarımında sorun vardır. |
NullDeviceLimiter | İşlemsiz olan varsayılan DeviceLimiter uygulaması (tüm cihazlar). | |
Kitaplık çekirdeği, entegrasyon gerekmez | Yanıt Verileri | Lisans yanıtı alanlarını barındıran sınıflar. |
Lisans Doğrulayıcı | Lisanslamadan alınan bir yanıtın şifresini çözen ve bu yanıtı doğrulayan sınıf sunucu. | |
Doğrulama İstisnası | Verilerin bütünlüğü doğrulanırken oluşan hataları gösteren sınıf tarafından yönetilir. | |
TercihObfuscator | Karartılmış verileri sistemin
SharedPreferences mağazası. |
|
ILisanslamaHizmeti | Lisans kontrolü isteğinin cihaza iletildiği tek yönlü IPC arayüzü Google Play istemcisi. | |
ILisansResultListener | Uygulamanın bir lisanslama sunucusundan eşzamansız yanıt alabilir. |
Sunucu Yanıtı
Tablo 2'de, lisans yöneticisinin döndürdüğü tüm lisans yanıt alanları lisanslama sunucusuna geç.
Alan | Açıklama |
---|---|
responseCode |
Lisanslama sunucusu tarafından döndürülen yanıt kodu. Yanıt kodları: Sunucu Yanıt Kodları'nda ana hatlarıyla açıklanmalıdır. |
signedData |
Lisanslama sunucusu tarafından döndürülen verileri aşağıdaki gibi saklayan bir dize birleştirme:
responseCode|nonce|packageName|versionCode|userId|timestamp:extras
|
signature |
Uygulamaya özel bir anahtar kullanılarak oluşturulan signedData imzası.
|
Sunucu Yanıt Kodları
Tablo 3'te, lisans lisansı tarafından desteklenen tüm lisans yanıt kodları lisanslama sunucusuna geç. Genel olarak, bir uygulama tüm bu yanıtları işlemelidir ekleyebilirsiniz. Varsayılan olarak LVL'deki LicenseValidator sınıfı gerekli işlemleri yapmanızı öneririz.
Yanıt Kodu | Tam sayı değeri temsili | Açıklama | İmzalandı mı? | Ekstralar | Yorumlar |
---|---|---|---|---|---|
LICENSED |
0 |
Uygulama, kullanıcıya lisanslandı. Kullanıcı veya alfa ya da beta sürümünü indirip yüklemeye yetkili olduğunu sağlar. | Evet | VT , GT GR |
Policy kısıtlamalarına göre erişime izin verin. |
LICENSED_OLD_KEY |
2 |
Uygulama kullanıcıya lisans verilmiş ancak güncellenmiş bir uygulama mevcut farklı bir anahtarla imzalanmış sürümü bulunmalıdır. | Evet | VT , GT , GR , UT |
İsteğe bağlı olarak, Policy kısıtlamalarına göre erişime izin verin.
Yüklü dosya tarafından kullanılan anahtar çiftinin uygulama sürümü geçersiz veya güvenliği ihlal edilmiş. Uygulama erişime izin verebilir gerekirse veya kullanıcıya bir yükseltme olduğunu bildirerek daha fazla kullanımı sınırlandırın yükseltmeye devam edebilirsiniz. |
NOT_LICENSED |
1 |
Uygulama kullanıcıya lisanslanmamış. | Hayır | Erişime izin verme. | |
ERROR_CONTACTING_SERVER |
257 |
Yerel hata — Google Play uygulaması lisans sunucusuyla ilgili bir sorun yaşıyor olabilir. | Hayır | Policy yeniden deneme sınırlarına göre lisans kontrolünü yeniden deneyin. |
|
ERROR_SERVER_FAILURE |
4 |
Sunucu hatası: Sunucu, uygulamanın anahtarını yükleyemedi lisanslama için eşle. | Hayır | Policy yeniden deneme sınırlarına göre lisans kontrolünü yeniden deneyin.
|
|
ERROR_INVALID_PACKAGE_NAME |
258 |
Yerel hata. Uygulama, bir paket için lisans kontrolü istedi bu uygulamaları kullanabilirsiniz. | Hayır | Lisans kontrolünü tekrarlamayın.
Genellikle bir geliştirme hatasından kaynaklanır. |
|
ERROR_NON_MATCHING_UID |
259 |
Yerel hata. Uygulama, bir paket için lisans kontrolü istedi UID'si (paket, kullanıcı kimliği çifti) istekte bulunan bir uygulamadır. | Hayır | Lisans kontrolünü tekrarlamayın.
Genellikle bir geliştirme hatasından kaynaklanır. |
|
ERROR_NOT_MARKET_MANAGED |
3 |
Sunucu hatası — uygulamayı (paket adı) tanımadı Google Play | Hayır | Lisans kontrolünü tekrarlamayın.
Uygulamanın yayınlanmadığını gösterebilir olduğunu veya lisanslamada bir geliştirme hatası olduğunu hakkında bilgi edindiniz. |
Not: bölümünde belirtildiği gibi Test Ortamı kurulurken yanıt kodu manuel olarak uygulama geliştirici ve kayıtlı test kullanıcıları için geçersiz kılmayı Google Play Console
Not: Önceden uygulamaları aşağıdaki ölçütlere göre test edebiliyordunuz: yayınlanmamış bir "taslak" yükleme sürümünü değil. Bu işlev artık devre dışı destekleniyor; bunun yerine alfa veya beta dağıtımına yayınlamanız gerekir. yardımcı olur. Daha fazla bilgi için Taslak Uygulamalar artık Desteklenmiyor.
Sunucu Yanıtı Ekstraları
Uygulamanızın geri ödemesi kapsamında uygulamaya erişimi yönetmesine yardımcı olmak için ve diğer bilgileri sağlamanız gerekir. Lisanslama sunucusu, lisans süreçlerinin ekleyebilirsiniz. Hizmet özellikle uygulamanın lisans geçerlilik süresi, yeniden deneme ek süresi, izin verilen maksimum yeniden deneme sayısı ve diğer Ayarlar'da devre dışı bırakabilirsiniz. Uygulamanız APK kullanıyorsa genişletme dosyalarını içeriyorsa yanıt; dosya adlarını, boyutlarını ve URL'leri de içerir. Sunucu, "extras" lisans yanıtındaki anahtar/değer çiftleri olarak ayarlar girin.
Herhangi bir Policy
uygulaması, lisanstan ekstra ayarları çıkarabilir
bunları gerektiği gibi kullanın. LVL varsayılan Policy
uygulaması (ServerManagedPolicy
),
ve verilerin nasıl edinileceğini, saklanacağını ve kullanılacağını
Ayarlar'da devre dışı bırakabilirsiniz.
Ekstra | Açıklama |
---|---|
VT |
Lisans geçerliliği zaman damgası. Geçerli öğenin bulunduğu tarihi/saati belirtir (önbelleğe alınmış) lisans yanıtının süresi dolar ve lisanslama sunucusunda yeniden kontrol edilmesi gerekir. İlgili bölümü inceleyin Lisans geçerlilik süresi hakkındaki makaleyi inceleyin. |
GT |
Ek süre zaman damgası. Bir reklamverenin dönüşüm gerçekleştireceği dönemin
Politika, yanıt durumu şu olsa bile uygulamaya erişime izin verebilir:
RETRY Değer, sunucu tarafından yönetilir ancak normal bir değer 5 olur veya daha fazla gün. İlgili bölümü inceleyin Yeniden deneme süresi ve maksimum yeniden deneme sayısı hakkındaki aşağıdaki bölüme bakın. |
GR |
Maksimum yeniden deneme sayısı. Art arda kaç RETRY lisans kontrolünün yapıldığını belirtir
Policy , kullanıcının uygulamaya erişimi reddetmeden önce izin vermelidir.
Değer, sunucu tarafından yönetilir ancak tipik bir değer "10" olur. veya daha yüksek. İlgili bölümü inceleyin Yeniden deneme süresi ve maksimum yeniden deneme sayısı hakkındaki aşağıdaki bölüme bakın. |
UT |
Zaman damgasını güncelleyin. En son güncellemenin yapıldığı günü/saati belirtir
bu uygulama yüklendi ve yayınlandı. Sunucu, bu ekstra
yalnızca |
FILE_URL1 veya FILE_URL2 |
Bir genişletme dosyasının URL'si (1 ana dosya, 2 yama dosyasıdır). Bunu şunun için kullanın: dosyayı HTTP üzerinden indirin. |
FILE_NAME1 veya FILE_NAME2 |
Genişletme dosyasının adı (1 ana dosya, 2 yama dosyası içindir). Bunu kullanmanız gerekir dosyanın adını kullandığınızdan emin olun. |
FILE_SIZE1 veya FILE_SIZE2 |
Dosyanın bayt cinsinden boyutu (1 ana dosya, 2 yama dosyası içindir). Bunu şunun için kullanın: ve cihazın paylaşılan görüntüsünde yeterli alan bulunduğundan emin olun. depolama konumunu gözden geçirin. |
Lisans geçerlilik süresi
Google Play lisanslama sunucusu, lisanslarınızın her biri için
indirilmiş uygulamalar. Dönem, bir kampanyanın belirli bir süre içinde
uygulamanın lisans durumu, değiştirilemez ve
Uygulamada bir lisanslama Policy
. Lisanslama sunucusu şunları içerir:
tüm lisans kontrollerine yanıt olarak geçerlilik süresi,
yanıta VT
anahtarının altında ekstra bir geçerlilik sonu zaman damgası CEVAP
Policy
, VT anahtar değerini ayıklayabilir ve bunu, şuna koşullu olarak erişim izni vermek için kullanabilir:
geçerlilik süresine kadar, lisans tekrar kontrol edilmeden yapılan başvuru
sona erecektir.
Lisans geçerliliği, tekrar kontrol edilmesi gerektiğinde Policy
lisansı için sinyal gönderir.
lisans durumu. ima etmemektedir.
uygulamanın kullanım için gerçekten lisanslanıp lisanslanmadığı. Başka bir deyişle,
lisans geçerlilik süresinin sona ermesi, bu dokümanın
kullanım lisansının kaldırılmış olduğunu ve bu durumun
Policy
, lisanslama durumunu sunucuyla yeniden kontrol etmelidir. Şöyle diyor:
lisans geçerlilik süresi sona ermediği sürece Lisans
İlk lisans durumunu yerel olarak önbelleğe almak ve önbelleğe alınan lisansı döndürmek için Policy
lisansının durumunu kontrol edebilirsiniz.
Lisans veren sunucu, geçerlilik süresini Google'ın sunduğu geri ödeme süresi boyunca lisanslamayı uygun şekilde zorunlu kılma Ücretli uygulamalar için Google Play. Geçerlilik süresini, uygulamanın satın alınıp alınmadığı ve satın alındıysa ne kadar süre önce satın alındığı. Özellikle, sunucu, geçerlilik süresini şu şekilde ayarlar:
- Ücretli bir uygulama için ilk lisans geçerlilik süresini sunucu belirler
Bu şekilde lisans yanıtının, başvuru yapıldığı sürece geçerli kalması için
geri ödeme yapılabilir. Uygulamadaki lisanslama
Policy
, lisansın yeniden kontrol edilmesi gerekmez ve lisansın, Geçerlilik süresi sona erene kadar. - Bir uygulama için artık geri ödeme yapılmazsa sunucu daha uzun bir geçerlilik süresi (genellikle birkaç gün) belirler.
- Sunucu, ücretsiz bir uygulama için geçerlilik süresini çok yüksek bir
değer (
long.MAX_VALUE
). Bu,Policy
öğesinin geçerlilik zaman damgasını yerel olarak önbelleğe aldıysa, lisans durumunu kontrol edebilir.
ServerManagedPolicy
uygulaması, çıkarılan zaman damgasını kullanır
(mValidityTimestamp
) ekleyebilirsiniz.
kullanıcıya lisans durumunu tekrar kontrol ederek
takip edebilirsiniz.
Yeniden deneme süresi ve maksimum yeniden deneme sayısı
Bazı durumlarda, sistem veya ağ koşulları bir uygulamanın lisans kontrolünün lisanslama sunucusuna ulaşmasını veya sunucunun Google Play istemci uygulamasına ulaşarak yanıt almamasını sağlayabilirsiniz. Örneğin, Kullanıcı, hücresel ağ veya veri bağlantısı olmadığında bir uygulamayı başlatabilir bağlantı varsa (ör. uçaktayken) veya ağ bağlantısı kararsız veya hücre sinyali zayıf.
Ağ sorunları bir lisans kontrolünü engellediğinde veya kesintiye uğrattığında Google
Play istemcisi, şuna bir RETRY
yanıt kodu döndürerek uygulamayı bilgilendirir:
Policy
processServerResponse()
yöntemi. durumunda,
Google Play'in
ILicensingService
uygulandığında LicenseChecker
kitaplığının kendisi
RETRY
yanıt koduna sahip processServerResponse()
politikası yöntemi.
Genel olarak RETRY
yanıt kodu, uygulamanın
lisans kontrolünün tamamlanmasını engelleyen bir hata oluştu.
Google Play sunucusu, bir uygulamanın
yeniden deneme "ek yayınlanma süresi" ayarlayarak hata koşullarını karşılama ve önerilen maksimum
yeniden deneme sayısı. Sunucu, bu değerleri tüm lisans kontrolü yanıtlarına ekler.
bunları GT
ve GR
anahtarlarının altına fazladan olarak ekleyin.
Policy
uygulaması GT
ve GR
ekstralarını ayıklayabilir ve bunları şu amaçlarla kullanabilir:
aşağıdaki koşullara uygun şekilde uygulamaya erişim izni verebilirsiniz:
RETRY
yanıtıyla sonuçlanan bir lisans kontrolü içinPolicy
RETRY
yanıt kodunu önbelleğe alır veRETRY
yanıt sayısını artırır.Policy
, aşağıdaki şartlarda kullanıcının uygulamaya erişmesine izin vermelidir: ek deneme süresi hâlâ etkin durumda veya maksimum yeniden deneme sayısı ulaşılmadı.
ServerManagedPolicy
, sunucu tarafından sağlanan GT
ve GR
değerlerini
'ne başvurun. Aşağıdaki örnekte, yeniden deneme işleminin koşullu olarak nasıl işlendiği gösterilmektedir
allow()
yöntemindeki yanıtları. RETRY
yanıt sayısı
processServerResponse()
yönteminde saklanmaktadır, gösterilmez.
Kotlin
fun allowAccess(): Boolean { val ts = System.currentTimeMillis() return when(lastResponse) { LICENSED -> { // Check if the LICENSED response occurred within the validity timeout. ts <= validityTimestamp // Cached LICENSED response is still valid. } RETRY -> { ts < lastResponseTime + MILLIS_PER_MINUTE && // Only allow access if we are within the retry period // or we haven't used up our max retries. (ts <= retryUntil || retryCount <= maxRetries) } else -> false } }
Java
public boolean allowAccess() { long ts = System.currentTimeMillis(); if (lastResponse == LicenseResponse.LICENSED) { // Check if the LICENSED response occurred within the validity timeout. if (ts <= validityTimestamp) { // Cached LICENSED response is still valid. return true; } } else if (lastResponse == LicenseResponse.RETRY && ts < lastResponseTime + MILLIS_PER_MINUTE) { // Only allow access if we are within the retry period // or we haven't used up our max retries. return (ts <= retryUntil || retryCount <= maxRetries); } return false; }