X

Oturum açın

Onaylamak için oturum açın

Şifrenizi mi unuttunuz?

...ya da Facebook ile giriş yap:

Hala bir AndroidPIT hesabınız yok mu? Kayıt ol

Uygulama lisanslama – Nasıl

Ön koşullar

LVL kullanıyor musun?

Eğer Android License Verification Library kullanıyorsan, AndroidPIT Licensing Library kullanmak senin için daha kolay olacaktır.

1.

AndroidPIT Licensing Library indir ve ve projeni ekle.

2.

Aşağıdaki iki değişken tanımlamasını değiştir

    private LicenseCheckerCallback mLicenseCheckerCallback;
    private LicenseChecker mChecker;

içinde

    private IAndroidPitLicenseCheckerCallback mLicenseCheckerCallback;
    private AndroidPitLicenseChecker mChecker;

3.

Denetleyici oluşturmayı değiştir

    mChecker = new LicenseChecker(
            this,
            new ServerManagedPolicy(
                    this,
                    new AESObfuscator(SALT, getPackageName(), deviceId)),
            GOOGLE_PUBLIC_KEY);

içinde

    mChecker = new AndroidPitLicenseChecker(
            this,
            getPackageName(),
            ANDROIDPIT_PUBLIC_KEY,
            new ServerManagedPolicy(
                    this,
                    new AESObfuscator(SALT, getPackageName(), deviceId)),
            GOOGLE_PUBLIC_KEY);

4.

Dinleyici tanımını değiştir(örnek)

    class MyLicenseCheckerCallback implements LicenseCheckerCallback

İçinde

    class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback

5.

applicationError içerisindeki errorCodetipini değiştir.

    public void applicationError(ApplicationErrorCode errorCode)

içinde

    public void applicationError(AndroidPitLicenseCheckCode errorCode)

ve hatalarla alakalı AndroidPIT yanıt kodlarını genişlet (aşağıya bakınız).

İşte bu kadar! Hem kontrol modu hem de allow() and dontAllow() geri arama yöntemlerinin değiştirilmesine gerek yoktur.

Hızlı çalıştır

The AndroidPIT Licensing Library özelliği Google'ın Android License Verification Library (LVL) özelliğiykle büyük benzerliğe sahiptir. AndroidPIT Licensing Library özelliğini kullanabilmek için Android License Verification Library (LVL) and the AndroidPIT Licensing Library i projenize ekleyin. onCreate()metodunuzda AndroidPitLicenseChecker ve IAndroidPitLicenseCheckerCallback yerine kullanılır. Buna ek olarak sana AndroidPIT içerisindeki geliştirici profilinde kullanılmak üzere, tarafımızdan sana gönderilecek bir lisans anahtarına ihtiyacın var. Bir aktivite örneği şöyle görünecektir:

import android.app.Activity;

public class LicensingTest extends Activity implements OnClickListener
{

    private final String ANDROIDPIT_PUBLIC_KEY = "rO0ABXNyABRqYX...;"

    private final Handler mHandler = new Handler();

    private IAndroidPitLicenseCheckerCallback mLicenseCheckerCallback;
    private AndroidPitLicenseChecker mChecker;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        mLicenseCheckerCallback = new MyLicenseCheckerCallback();
        mChecker = new AndroidPitLicenseChecker(
                this,
                getPackageName(),
                ANDROIDPIT_PUBLIC_KEY);

        setContentView(R.layout.main);

        mChecker.checkAccess(mLicenseCheckerCallback);
    }

    @Override
    protected void onDestroy
    {
        super.onDestroy();
        mChecker.onDestroy();
    }

    class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
    {

        @Override
        public void allow()
        {
            // TODO: Handle positive response
        }

        @Override
        public void dontAllow()
        {
            // TODO: Handle negative response
        }

        @Override
        public void applicationError(AndroidPitLicenseCheckCode errorCode)
        {
            // TODO: Handle application error
        }

    }

}

Ayrıca AndroidPIT üzerinde geçerli lisans kontrolü yaparken aynı zamanda zahmetsiz bir şekilde Android Piyasasını da tarayabilirsin. Bu işlemi yapabilmek için AndroidPitLicenseChecker kurulumunu yaparak Google şartları ve ortak anahtarlarını al. LVL kurulumunun diğer adımları için LVL documentationa danış.

/**
 * Creates the AndroidPitLicenseChecker with all data to check against the
 * AndroidPIT App Center and Google. Google is checked first. If it fails,
 * AndroidPIT App Center will be consulted.
 
 @param context
 *            the context of the application
 @param appPkgName
 *            the package id of the app
 @param androidPitPublicKey
 *            the developers public key at AndroidPIT
 @param googlePolicy
 *            policy for Google licensing - @see LVL documentation
 @param googlePublicKey
 *            public key for Google licensing - @see LVL documentation
 */
public AndroidPitLicenseChecker(
        final Context context,
        final String appPkgName,
        final String androidPitPublicKey,
        final Policy googlePolicy,
        final String googlePublicKey);

Tüm detaylar

AndroidPIT lisanslama sistemi Google tarafından geliştirilmiş Android License Verification Library (LVL) esas alınarak yapılmıştır.Bu sistem AndroidPIT Uygulama Merkezi vasıtası ile satın alınmış uygulamaların geçerliliğini test eder. Bu lisanslama sağlayıcısına internet üzerinden bağlanılır. Bunun dışında son olarak kullanıcının geçerli bir AndroidPIT hesabının olması gereklidir.

AndroidPIT Licensing Library yardımıyla uygulaman Uygulama Merkezi tarafından son kullanıcın uygulamayı çalıştırmak için geçerli bir lisansa sahip olup olmadığını kontrol eder. Uygunluk kontrolü uygulama her başlatıldığında yapılır. En erken kontrol internet bağlantısı yapılır yapılmaz gerçekleşir.Bu arada ön bellek kontrolü en son istek temel alınarak gerçekleştirilir(ön bellek uygulamalarında zaman çerçevesinin her zaman değiştirilebileceğini aklınızda bulundurun).

Adım adım

Bu adım adım uygulama Eclipse ADT kullandığınız varsayımına dayanır. başka bir geliştirme aracı kullanmanız durumunda, daha fazla adıma ihtiyaç duyabilirsiniz.

AndroidPIT Licensing libraryve indir. Android License Verification Library (LVL)ve Eclipse projesi olarak ekle. AndroidPIT Licensing Library kullanabilmek için en azından Android 1.6 ile çıkartılmış Android API versiyon 4 gereklidir. Yeni bir Android uygulaması yaratmak ve androidpit lisanslama kütüphanesini kullanmak için uygulama projesine bağlamak imkanı vardır. Kütüphanenin Android License Verification Library (LVL)ile bağlantı linklerini de kontrol edin.

Projem; çözülmemiş semboller gösteriyor ya da benim uygulamalarımı derleyemiyor.

Lütfen Android Projenizin iletişim tercihleri içerisinde yer alan Google LVL ve AndroidPIT Licensing Library yollarını kontrol edin. Bu yolların dosya sisteminizdekilerle aynı olması gerekmektedir.

Application project settings

AndroidPIT Licensing Library ayarları bunun gibi gözükmelidir:

Library project settings

Lisans doğrulama kodunu nasıl yapılandırabilirim?

Licensing Library 'nin AndroidPIT Uygulama Merkezi üzerinde geçerli lisans kontrolüne izin vermek için, eyleminizin MyLicenseCheckerCallback sınıfındaki bir örneğinionCreate()arayın. Sonuçlanan kod şu şekilde gözükebilir:

mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker = new AndroidPitLicenseChecker(
          this, getPackageName(), ANDROIDPIT_PUBLIC_KEY);
mChecker.checkAccess(mLicenseCheckerCallback);

Ayrıca constructor size AndroidPIT web sayfasındaki profilinizde sağladığımız bas64 ile kodlanmış genel anahtara ihtiyaç duyulabilir.

Nasıl lisans sunucusundan bir mesaj alabilirsin?

Lisans AndroidPitLicenseChecker üzerinde checkAccess() çağrılarak kontrol edilir. Bu yöntem IAndroidPitLicenseCheckerCallback arayüz kullanan bir nesne geri çağırma nesnesine ihtiyaç duyar. allow() yöntemi Licensing Library içerisinde sizi lisans onaylaması yönünde bilgilendirir. Herhangi bir başka durumda dontAllow() uyarısı alınır. Ayrıca applicationError() sizi lisanslama kontrolü sırasında oluşabilecek hatalar hakkında uyarır. Bu üç aşamada olabilecek eylemler üzerinde tam kontrole sahipsiniz

class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
{

    @Override
    public void allow()
    {
        // TODO: Handle positive response
    }

    @Override
    public void dontAllow()
    {
        // TODO: Handle negative response
    }

    @Override
    public void applicationError(AndroidPitLicenseCheckCode errorCode)
    {
        // TODO: Handle application error
    }

}

Nasıl ek olarak Andoid Piyasasındaki bir lisansı doğrulayabilirim?

İlaveten lisanslama sistemimizi kontrol etmeniz için Googleʼs Android License Verification Library (LVL)’ nin kolay entegre edilebilir bir sürümünü sağlıyoruz. Bunu entegre etmek için AndroidPitLicenseChecker üzerinde LVL policy and public key olşturucuyu ekleyin. Lisans kontrolü License Library üzerinden başlayacaktır Google lisans kontrolü başarılı olduğu takdirde allow() şeklinde bilgilendirilirsiniz. Olumsuz geri dönüşler AndroidPIT lisanslama server ları üzerinde ek bir talep sonucunu doğurur. Bu taleplerinde olumsuz sonuçlanması durumund Licensing Library den olumsuz cevap alırsınız.

Bu örnek Google API belgelerine dayanmaktadır.

mChecker = new AndroidPitLicenseChecker(
               this, 
               getPackageName()
               ANDROIDPIT_PUBLIC_KEY,
               new ServerManagedPolicy(
                   this,
                   new AESObfuscator(SALT, getPackageName(), deviceId)),
               GOOGLE_PUBLIC_KEY);

Lisans sunucusundan farklı hata mesajlarını nasıl test edebilirim?

AndroidPIT üzerindeki geliştirici profilinizdeki lisanslama sayfasında bir yanıtlama kodu oluşturabilirsiniz. Uygulamanızın lisanslama serverımızdan gelen hata mesajlarını doğru bir şekilde yanıtlayıp yanıtlamadığını test etmeniz açısından fydalıdır. Bunu başlatmak için listeden doğru değeri seçmek gerekir. Test cihazınızda geliştirici hesabınız ile giriş yaptıktan sonra, lisanslama serverı daima seçilen yanıtlama kodu ile yanıt verecektir.

Uygulama Merkezi sonucunu ön belleğe almayı nasıl iptal edebilirim?

Uygulama Merkezi en son isteğin sonuçlarını en azından bir gün ya da mobil cihaz internet üzerinden lisanslama merkezimize bağlanılana kadar saklar. Bu saklama arabellek işlemini kaldırmak için, lisanslama kontrol edicisi içindeki debug modunu etkinleştirebilirsiniz. Bunu yapmak için setDebug(true) işlemini gerçekleştirin. Uygulamanızı yayınlamadan önce debug modunu kapatmayı unutmayın.

Eğer bir kullanıcı Uygulama Merkezi'ne üye değilse ne olur?

Uygulama Merkezi’nde hiç ya da geçersiz kimlik bilgileri saklandığında, The Licensing Library – Lisanslama Kütüphanesi bir popup diyalog renceresi gösterir ve kullanıcının AndroidPIT e-posta adresi ve şifresini sorar.

Lisans talebinin lisans sunucusuna ulaştığına nasıl emin olurum?

AndroidPIT license library-lisanslama kütüphanesi AndroidPitSignedLicenseChecker sınıfı içerir. Bu sınıf, komutun lisans serverına gidip gitmediğini kontrol etme imkanı sağlar. Kütüphane gelen imzayı AndroidPitLicenseingResponseValidator kullanarak onaylar. Lüfen bu mekanizmayı hiçbir lisans state ara bellek işlemi olmadığı şeklinde algılayın. Tüm yanıtlar girilen veriye göre oluşturulur. Eğer kullanıcının lisans serverına bağlantısı yoksa, kütüphane şu şekilde bir cevap verir: ERROR_NOT_CONNECTED.

AndroidPitSignedLicenseChecker kullanılmış bir örnek şu şekilde gözükebilir:

AndroidPitSignedLicenseChecker mChecker;

[ ... ]

mChecker = new AndroidPitSignedLicenseChecker(
               this, 
               getPackageName()
               ANDROIDPIT_PUBLIC_KEY);

Kendi lisans doğrulamamı kullanabilir miyim? İmza doğrulamasını kendim yapmak istiyorum.

Evet bu mümkündür. Lütfen ILicensingResponseValidator arayüzünü uygulayın ve AndroidPitSignedLicenseChecker uygulama ınıfının bir örneğini sağlayın. Bu sınıf iki metod uygular. getSalt()checkResponse() metodu AndroidPitLicenseCheckCode.NOT_LICENSED yanıt verilerini doğrulamak içindir. Doğrulama sunucusundan yanıt kodu başarılı olduğu takdirde servera geri dönülür. Örnek uygulama olarak AndroidPIT Licensing Library AndroidPitLicensingResponseValidator a danışılabilir.

Projem numaralandırmayı bulamıyorde.androidpit.AndroidPitLicenseCheckError.

Numaralandırma de.androidpit.AndroidPitLicenseCheckCode olarak yeniden adlandırıldı.

Base64-String e bağlı nasıl bir PublicKey öğesi oluşturabilirim?

Fark ettiğiniz üzere size Base64 olarak kodlanmış bir public key- genel anahtar sağlıyoruz. İhtiyaç duyduğunuz verinin imzasını kontrol etmek için bu dizeyi-string PublicKey nesnesine dönüştürmeniz gerekir. Aşağıda bunu nasıl yapacağınız gösterilmiştir.

    /**
     * Converts the base64 encoded representation of a public key into a
     * PublicKey object.
     */
    private PublicKey createPublicKey(String pubKeyBase64)
    {

        PublicKey pubKey = null;
        try
        {
            // the pub key comes in as a Base64 coded string. Decode to the
            // byte array which contains the object stream of the public key
            ByteArrayInputStream pubKeyByteArray = new ByteArrayInputStream(
                    Base64.decode(pubKeyBase64));
            ObjectInputStream publicKeyObject = new ObjectInputStream(
                    pubKeyByteArray);
            BigInteger modulus = (BigIntegerpublicKeyObject.readObject();
            BigInteger exponent = (BigIntegerpublicKeyObject.readObject();

            RSAPublicKeySpec keySpec = new RSAPublicKeySpec(modulus, exponent);
            KeyFactory rsaKeyFactory = KeyFactory.getInstance("RSA");
            pubKey = rsaKeyFactory.generatePublic(keySpec);
        }
        catch (Exception ex)
        {
            Log.e(
                    "LicenseResponseValidator",
                    "Deserialization of public key failed.",
                    ex);
        }
        return pubKey;
    }

AndroidPIT Licensing Library

Eğer eski Android Market lisanslama kütüphanesini kullanıyorsanız (Package com.android.vending.licensing) AndroidPIT kütüphanesinin bu sürümünü kullanın:
AndroidPIT Licensing Library Version 1.3

Eğer yeni Google Play kütüphanesini kullanıyorsanız (Package com.google.android.vending.licensing) AndroidPIT kütüphanesinin bu sürümünü kullanın:
AndroidPIT Licensing Library Version 2.1