Die Google Play-Lizenzierung ist ein netzwerkbasierter Dienst, mit dem eine Anwendung einen vertrauenswürdigen Google Play-Lizenzierungsserver abfragen kann, um zu ermitteln, ob die Anwendung für den aktuellen Gerätenutzer lizenziert ist. Der Lizenzierungsservice basiert auf der Fähigkeit des Google Play-Lizenzierungsservers, zu ermitteln, ob ein bestimmter Nutzer eine Lizenz zur Verwendung einer bestimmten Anwendung hat. Google Play betrachtet einen Nutzer als lizenziert, wenn er als Käufer der Anwendung registriert ist.
Die Anfrage beginnt, wenn Ihre Anwendung eine Anfrage an einen Dienst stellt, der von der Google Play-Clientanwendung gehostet wird. Die Google Play-Anwendung sendet dann eine Anfrage an den Lizenzierungsserver und empfängt das Ergebnis. Die Google Play-App sendet das Ergebnis an Ihre App, die die weitere Verwendung der App nach Bedarf zulassen oder verhindern kann.
Hinweis:Wenn sich eine Version einer App in einem geschlossenen oder offenen Test-Track befindet, gelten alle Nutzer, die zum Herunterladen und Installieren dieser App berechtigt sind, als lizenzierte Nutzer der App. Weitere Informationen finden Sie unter Mit Test-Tracks wertvolles Feedback von Nutzern frühzeitig erhalten.
![](https://developer.android.google.cn/static/images/google/play/licensing/licensing_arch.png?authuser=3&hl=de)
Abbildung 1: Ihre Anwendung initiiert eine Lizenzprüfung über die License Verification Library und den Google Play-Client, der die Kommunikation mit dem Google Play-Server übernimmt.
Hinweis:Bisher konnten Sie eine App testen, indem Sie eine unveröffentlichte „Entwurfsversion“ hochgeladen haben. Diese Funktion wird nicht mehr unterstützt. Stattdessen müssen Sie sie in den geschlossenen oder offenen Test-Tracks veröffentlichen. Weitere Informationen finden Sie unter Vorabversionen von Apps werden nicht mehr unterstützt.
Um den Nutzer korrekt zu identifizieren und den Lizenzstatus zu ermitteln, benötigt der Lizenzierungsserver Informationen zur Anwendung und zum Nutzer. Ihre Anwendung und der Google Play-Client arbeiten zusammen, um die Informationen zusammenzustellen, die der Google Play-Client an den Server weitergibt.
Das Android SDK bietet eine Reihe von herunterladbaren Bibliotheksquellen, die Sie in Ihr Anwendungsprojekt einbinden können, um Ihrer App eine Lizenz hinzuzufügen: das Google Market Licensing-Paket. Die License Verification Library (LVL) ist eine Bibliothek, die Sie Ihrer Anwendung hinzufügen können. Sie übernimmt die gesamte Lizenzierungskommunikation mit dem Google Play-Lizenzierungsservice. Wenn Ihrer Anwendung die LVL hinzugefügt wurde, kann sie den Lizenzstatus für den aktuellen Nutzer ermitteln, indem sie einfach eine Methode aufruft und einen Rückruf implementiert, der die Statusantwort empfängt.
Ihre Anwendung fragt den Lizenzierungsserver nicht direkt ab, sondern ruft stattdessen den Google Play-Client über Remote-IPC auf, um eine Lizenzanfrage zu starten. In der Lizenzanfrage:
- Ihre Anwendung stellt Folgendes bereit: den Paketnamen, eine Einmalanfrage, die später verwendet wird, um jede Antwort vom Server zu validieren, und einen Rückruf, über den die Antwort asynchron zurückgegeben werden kann.
- Der Google Play-Client erhebt die erforderlichen Informationen zum Nutzer und zum Gerät, z. B. den Nutzernamen des primären Google-Kontos, die IMSI und andere Informationen. Anschließend sendet er die Anfrage zur Lizenzprüfung im Namen Ihrer Anwendung an den Server.
- Der Google Play-Server wertet die Anfrage anhand aller verfügbaren Informationen aus und versucht, die Identität des Nutzers mit ausreichender Sicherheit festzustellen. Der Server prüft dann die Nutzeridentität anhand der Kaufaufzeichnungen für Ihre Anwendung und gibt eine Lizenzantwort zurück, die der Google Play-Client über den IPC-Callback an Ihre Anwendung zurückgibt.
Sie können festlegen, wann und wie oft Ihre Anwendung die Lizenz prüfen soll. Außerdem haben Sie die volle Kontrolle darüber, wie die Antwort verarbeitet, die signierten Antwortdaten überprüft und die Zugriffssteuerung erzwungen wird.
Beachten Sie, dass Ihre Anwendung während einer Lizenzprüfung keine Netzwerkverbindungen verwaltet und keine APIs zur Lizenzierung auf der Android-Plattform verwendet.
Lizenzantworten sind sicher
Um die Integrität jeder Lizenzabfrage zu gewährleisten, signiert der Server die Lizenzantwortdaten mit einem RSA-Schlüsselpaar, das ausschließlich zwischen dem Google Play-Server und Ihnen geteilt wird.
Der Lizenzierungsservice generiert für jede Anwendung ein einzelnes Lizenzierungsschlüsselpaar und stellt den öffentlichen Schlüssel auf der Seite Dienste und APIs Ihrer Anwendung in der Play Console bereit. Sie müssen den öffentlichen Schlüssel aus der Play Console kopieren und in den Quellcode Ihrer Anwendung einbetten. Der Server speichert den privaten Schlüssel intern und verwendet ihn, um Lizenzantworten für die Anwendungen zu signieren, die Sie mit diesem Konto veröffentlichen.
Wenn Ihre Anwendung eine signierte Antwort empfängt, werden die Daten mit dem eingebetteten öffentlichen Schlüssel überprüft. Durch die Verwendung der Public-Key-Kryptografie im Lizenzierungsservice kann die Anwendung manipulierte oder gefälschte Antworten erkennen.
Bibliothek für Lizenzbestätigungen
Das Android SDK bietet ein herunterladbares Paket namens Google Market Licensing Package, das die License Verification Library (LVL) enthält. Der LVL vereinfacht das Hinzufügen von Lizenzen zu Ihrer Anwendung erheblich und trägt zu einer sichereren, robusteren Implementierung Ihrer Anwendung bei. Die LVL bietet interne Klassen, die die meisten Standardvorgänge einer Lizenzabfrage verarbeiten, z. B. die Kontaktaufnahme mit dem Google Play-Client, um eine Lizenzanfrage zu starten, und die Überprüfung und Validierung der Antworten. Außerdem bietet es Oberflächen, über die Sie ganz einfach Ihren benutzerdefinierten Code einbinden können, um die Lizenzierungsrichtlinie zu definieren und den Zugriff gemäß den Anforderungen Ihrer Anwendung zu verwalten. Die wichtigsten LVL-Schnittstellen sind:
Policy
- In Ihrer Implementierung wird basierend auf der vom Server empfangenen Lizenzantwort und allen anderen verfügbaren Daten (z. B. von einem mit Ihrer Anwendung verknüpften Backend-Server) festgelegt, ob der Zugriff auf die Anwendung zugelassen wird. Die Implementierung kann die verschiedenen Felder der Lizenzantwort auswerten und bei Bedarf andere Einschränkungen anwenden. Außerdem können Sie damit die Verarbeitung von Lizenzprüfungen verwalten, die zu Fehlern führen, z. B. Netzwerkfehler.
LicenseCheckerCallback
- In Ihrer Implementierung wird der Zugriff auf die Anwendung basierend auf dem Ergebnis der Verarbeitung der Lizenzantwort durch das
Policy
-Objekt verwaltet. Mit Ihrer Implementierung können Sie den Zugriff beliebig verwalten, z. B. das Lizenzergebnis in der Benutzeroberfläche anzeigen oder den Nutzer zum Kauf der Anwendung auffordern (falls derzeit nicht lizenziert).
Um Ihnen den Einstieg in Policy
zu erleichtern, bietet das LVL zwei vollständige Policy
-Implementierungen, die Sie ohne Änderungen verwenden oder an Ihre Anforderungen anpassen können:
ServerManagedPolicy
- Ein flexibler
Policy
, der die vom Lizenzierungsserver bereitgestellten Einstellungen verwendet, um das Antwort-Caching und den Zugriff auf die Anwendung zu verwalten, während das Gerät offline ist (z. B. wenn sich der Nutzer in einem Flugzeug befindet). Für die meisten Anwendungen wird die Verwendung vonServerManagedPolicy
dringend empfohlen. StrictPolicy
- Ein restriktiver
Policy
, der keine Antwortdaten im Cache speichert und der Anwendung den Zugriff nur erlaubt, wenn der Server eine lizenzierte Antwort zurückgibt.
Das LVL ist als herunterladbares Paket des Android SDK verfügbar. Das Paket enthält sowohl die LVL selbst als auch eine Beispielanwendung, die zeigt, wie die Bibliothek in Ihre Anwendung eingebunden werden sollte und wie Ihre Anwendung Antwortdaten, UI-Interaktionen und Fehlerbedingungen verwalten sollte.
Die LVL-Quellen werden als Android-Bibliotheksprojekt bereitgestellt. Das bedeutet, dass Sie einen einzelnen Satz von Bibliotheksquellen verwalten und für mehrere Anwendungen freigeben können. Über das SDK ist auch eine vollständige Testumgebung verfügbar. So können Sie die Lizenzimplementierung in Ihren Apps entwickeln und testen, bevor Sie sie veröffentlichen, auch wenn Sie keinen Zugriff auf ein physisches Gerät haben.
Anforderungen und Einschränkungen
Mit der Google Play-Lizenzierung können Sie Lizenzierungssteuerungen auf Apps anwenden, die Sie über Google Play veröffentlichen. Der Dienst ist nicht dafür vorgesehen, dass Sie den Zugriff auf Anwendungen steuern können, die nicht über Google Play veröffentlicht werden oder auf Geräten ausgeführt werden, auf denen der Google Play-Client nicht angeboten wird.
Beachten Sie bei der Implementierung der Lizenzierung in Ihrer Anwendung Folgendes:
- Eine Anwendung kann den Dienst nur verwenden, wenn der Google Play-Client auf dem Hostgerät installiert ist und das Gerät Android 1.5 (API-Level 3) oder höher verwendet.
- Damit eine Lizenzprüfung durchgeführt werden kann, muss der Lizenzierungsserver über das Netzwerk zugänglich sein. Sie können Lizenz-Caching-Verhalten implementieren, um den Zugriff auf Ihre Anwendung zu verwalten, wenn keine Netzwerkverbindung besteht.
- Die Sicherheit der Lizenzierungssteuerungen Ihrer Anwendung hängt letztendlich vom Design Ihrer Implementierung ab. Der Dienst bietet die Bausteine, mit denen Sie die Lizenzierung sicher prüfen können. Die tatsächliche Durchsetzung und Handhabung der Lizenz liegt jedoch in Ihrer Verantwortung. Wenn Sie die Best Practices in den folgenden Dokumenten befolgen, können Sie dafür sorgen, dass Ihre Implementierung sicher ist.
- Das Hinzufügen von Lizenzen zu einer Anwendung hat keine Auswirkungen auf die Funktionsweise der Anwendung, wenn sie auf einem Gerät ausgeführt wird, auf dem Google Play nicht angeboten wird.
- Sie können Lizenzierungssteuerungen für eine kostenlose App implementieren, aber nur, wenn Sie den Dienst zum Bereitstellen von APK-Erweiterungsdateien verwenden.
Ersatz für Kopierschutz
Die Google Play-Lizenzierung ist ein flexibler, sicherer Mechanismus zur Steuerung des Zugriffs auf Ihre Anwendungen. Er ersetzt den Kopierschutzmechanismus (nicht mehr unterstützt), der zuvor bei Google Play angeboten wurde, und bietet Ihnen ein breiteres Vertriebspotenzial für Ihre Anwendungen.
Mit der Lizenzierung können Sie zu einem Lizenzmodell wechseln, das auf allen Geräten mit Zugriff auf Google Play durchgesetzt werden kann. Der Zugriff ist nicht an die Eigenschaften des Hostgeräts gebunden, sondern an Ihre App bei Google Play (über den öffentlichen Schlüssel der App) und die von Ihnen festgelegte Lizenzierungsrichtlinie. Ihre Anwendung kann auf jedem Gerät und auf jedem Speichermedium installiert und verwaltet werden, einschließlich SD-Karte.
Obwohl kein Lizenzmechanismus eine unbefugte Nutzung vollständig verhindern kann, können Sie mit dem Lizenzierungsservice den Zugriff für die meisten Arten der normalen Nutzung auf allen kompatiblen Geräten steuern, unabhängig davon, ob sie gesperrt oder entsperrt sind.
Wenn Sie Ihrer App die App-Lizenzierung hinzufügen möchten, fahren Sie mit Einrichtung für die Lizenzierung fort.