Lizenzierung – Übersicht

Die Google Play-Lizenzierung ist ein netzwerkbasierter Dienst, mit dem eine App einen vertrauenswürdigen Google Play-Lizenzierungsserver abfragen kann, um festzustellen, ob die App für den aktuellen Gerätenutzer lizenziert ist. Der Lizenzierungsservice basiert auf der Fähigkeit des Google Play-Lizenzierungsservers, festzustellen, ob ein bestimmter Nutzer für die Verwendung einer bestimmten App lizenziert ist. Google Play betrachtet einen Nutzer als lizenziert, wenn er ein erfasster Käufer der App ist.

Die Anfrage wird gestartet, wenn Ihre App eine Anfrage an einen Dienst stellt, der von der Google Play-Clientanwendung gehostet wird. Die Google Play-App 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 untersagen kann.

Hinweis:Wenn sich eine Version einer App in den Tracks für geschlossene oder offene Tests befindet, gelten alle Nutzer, die zum Herunterladen und Installieren dieser App berechtigt sind, als lizenzierte Nutzer der App. Weitere Informationen findest du unter Test-Tracks verwenden, um wertvolles frühes Feedback von Nutzern zu erhalten.

Abbildung 1: Deine App initiiert eine Lizenzprüfung über die Lizenzüberprüfungsbibliothek und den Google Play-Client, der die Kommunikation mit dem Google Play-Server übernimmt.

Hinweis:Bisher konnten Sie eine Anwendung testen, indem Sie eine unveröffentlichte Entwurfsversion hochgeladen haben. Diese Funktion wird nicht mehr unterstützt. Du musst sie stattdessen im geschlossenen oder offenen Test-Track veröffentlichen. Weitere Informationen finden Sie unter App-Entwürfe werden nicht mehr unterstützt.

Damit der Nutzer richtig identifiziert und der Lizenzstatus bestimmt werden kann, benötigt der Lizenzierungsserver Informationen über die App und den Nutzer. Die Informationen werden von deiner App und dem Google Play-Client zusammengefügt und der Google Play-Client leitet sie an den Server weiter.

Damit Sie Ihrer App eine Lizenz hinzufügen können, bietet das Android SDK eine herunterladbare Bibliotheksquelle, die Sie in Ihr App-Projekt einbinden können: das Google Market-Lizenzpaket. Die LVL ist eine Bibliothek, die Sie Ihrer App hinzufügen können. Sie übernimmt die gesamte lizenzierungsbezogene Kommunikation mit dem Google Play-Lizenzierungsservice. Wenn die LVL Ihrer Anwendung hinzugefügt wurde, kann Ihre Anwendung den Lizenzierungsstatus für den aktuellen Nutzer ermitteln, indem einfach eine Methode aufgerufen und ein Callback implementiert wird, der die Statusantwort empfängt.

Ihre App fragt den Lizenzierungsserver nicht direkt ab, sondern ruft den Google Play-Client über Remote-IPC auf, um eine Lizenzanfrage zu initiieren. In der Lizenzanfrage:

  • Ihre Anwendung stellt Folgendes bereit: den Paketnamen, eine Nonce, die später zur Validierung von Antworten vom Server verwendet wird, und einen Callback, über den die Antwort asynchron zurückgegeben werden kann.
  • Der Google Play-Client erfasst die erforderlichen Informationen über den Nutzer und das Gerät, z. B. den primären Nutzernamen des Google-Kontos des Geräts, die IMSI und andere Informationen. Anschließend wird die Lizenzüberprüfungsanfrage im Namen deiner Anwendung an den Server gesendet.
  • Der Google Play-Server wertet die Anfrage anhand aller verfügbaren Informationen aus und versucht, die Identität des Nutzers mit ausreichender Sicherheit zu ermitteln. Der Server prüft dann die Nutzeridentität mit den Kaufdatensätzen für deine App und gibt eine Lizenzantwort zurück, die der Google Play-Client über den IPC-Callback an deine App zurückgibt.

Sie können auswählen, wann und wie oft Ihre Anwendung ihre Lizenz prüfen soll. Sie haben die volle Kontrolle darüber, wie sie die Antwort verarbeitet, die Daten der signierten Antwort prüft und Zugriffssteuerungen erzwingt.

Beachten Sie, dass Ihre App während einer Lizenzprüfung keine Netzwerkverbindungen verwaltet und keine lizenzierungsbezogenen APIs 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 dir geteilt wird.

Der Lizenzierungsdienst generiert ein einzelnes Lizenzierungsschlüsselpaar für jede App und stellt den öffentlichen Schlüssel auf der Seite Dienste und APIs Ihrer App 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 bewahrt den privaten Schlüssel intern auf und signiert damit Lizenzantworten für die Anwendungen, die Sie mit diesem Konto veröffentlichen.

Wenn Ihre Anwendung eine signierte Antwort erhält, verwendet sie den eingebetteten öffentlichen Schlüssel, um die Daten zu überprüfen. Durch die Verwendung von Public-Key-Kryptografie im Lizenzierungsdienst kann die Anwendung Antworten erkennen, die manipuliert oder gefälscht wurden.

Überprüfungsbibliothek für die Lizenzierung

Das Android SDK bietet ein herunterladbares Paket namens Google Market-Lizenzierungspaket, das die License Verification Library (LVL) enthält. Die LVL vereinfacht das Hinzufügen von Lizenzen zu Ihrer Anwendung erheblich und sorgt für eine sicherere und robustere Implementierung Ihrer Anwendung. Die LVL stellt interne Klassen bereit, die die meisten Standardvorgänge einer Lizenzabfrage verarbeiten, z. B. das Kontaktieren des Google Play-Clients zum Initiieren einer Lizenzanfrage und das Überprüfen und Validieren der Antworten. Außerdem stellt es Schnittstellen zur Verfügung, mit denen Sie Ihren benutzerdefinierten Code einfach einfügen können, um Lizenzrichtlinien zu definieren und den Zugriff nach Bedarf für Ihre Anwendung zu verwalten. Die wichtigsten LVL-Schnittstellen sind:

Policy
Ihre Implementierung bestimmt anhand der vom Server empfangenen Lizenzantwort und anderer verfügbarer Daten (z. B. von einem mit Ihrer Anwendung verknüpften Back-End-Server), ob der Zugriff auf die Anwendung zugelassen wird. Die Implementierung kann die verschiedenen Felder der Lizenzantwort auswerten und bei Bedarf weitere Einschränkungen anwenden. Außerdem lässt sich die Verarbeitung von Lizenzprüfungen verwalten, die zu Fehlern wie Netzwerkfehlern führen.
LicenseCheckerCallback
Ihre Implementierung verwaltet den Zugriff auf die Anwendung basierend auf dem Ergebnis der Lizenzantwort durch das Policy-Objekt. Ihre Implementierung kann den Zugriff auf jede beliebige Weise verwalten, z. B. indem das Lizenzergebnis in der UI angezeigt wird oder der Nutzer zum Kauf der Anwendung weitergeleitet wird (falls er noch nicht lizenziert ist).

Um Ihnen den Einstieg in eine Policy zu erleichtern, bietet die LVL zwei vollständig vollständige Policy-Implementierungen, die Sie ohne Änderung oder Anpassung an Ihre Anforderungen verwenden können:

ServerManagedPolicy
Eine flexible Policy, die vom Lizenzierungsserver bereitgestellte Einstellungen für das Caching von Antworten und den Zugriff auf die Anwendung verwendet, wenn das Gerät offline ist (z. B. wenn sich der Nutzer in einem Flugzeug befindet). Für die meisten Anwendungen wird die Verwendung von ServerManagedPolicy dringend empfohlen.
StrictPolicy
Eine restriktive Policy, die keine Antwortdaten im Cache speichert und der Anwendung nur dann Zugriff gewährt, wenn der Server eine lizenzierte Antwort zurückgibt.

Die LVL kann als herunterladbares Paket des Android-SDKs heruntergeladen werden. Das Paket enthält sowohl die LVL selbst als auch eine Beispielanwendung, die zeigt, wie die Bibliothek in Ihre Anwendung integriert 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 steht auch eine vollständige Testumgebung zur Verfügung, in der Sie die Lizenzierungsimplementierung in Ihren Anwendungen entwickeln und testen können, bevor Sie sie veröffentlichen, selbst wenn Sie keinen Zugriff auf ein physisches Gerät haben.

Anforderungen und Beschränkungen

Mit der Google Play-Lizenzierung können Sie Lizenzeinstellungen auf Apps anwenden, die Sie über Google Play veröffentlichen. Mit diesem Dienst können Sie nicht den Zugriff auf Apps steuern, die nicht über Google Play veröffentlicht sind oder auf Geräten ausgeführt werden, auf denen der Google Play-Client nicht angeboten wird.

Hier sind einige Punkte, die Sie bei der Implementierung der Lizenzierung in Ihrer Anwendung beachten sollten:

  • Apps können den Dienst nur dann nutzen, wenn der Google Play-Client auf dem Hostgerät installiert ist und auf dem Gerät Android 1.5 (API-Level 3) oder höher ausgeführt wird.
  • Damit eine Lizenzprüfung durchgeführt werden kann, muss der Lizenzierungsserver über das Netzwerk zugänglich sein. Sie können Verhaltensweisen für das Lizenz-Caching implementieren, um den Zugriff auf Ihre Anwendung zu verwalten, wenn keine Netzwerkverbindung besteht.
  • Die Sicherheit der Lizenzierungskontrollen Ihrer Anwendung hängt letztlich vom Design Ihrer Implementierung ab. Der Dienst stellt die Bausteine bereit, mit denen Sie die Lizenzierung sicher prüfen können. Die tatsächliche Durchsetzung und Handhabung der Lizenz hängt jedoch von Ihnen ab. Mit den Best Practices in den folgenden Dokumenten sorgen Sie für eine sichere Implementierung.
  • Das Hinzufügen einer Lizenzierung zu einer App hat keinen Einfluss auf die Funktionsweise der App, wenn sie auf einem Gerät ausgeführt wird, auf dem Google Play nicht angeboten wird.
  • Sie können Lizenzierungskontrollen für eine kostenlose App implementieren, allerdings nur, wenn Sie den Dienst zur Bereitstellung von APK-Erweiterungsdateien verwenden.

Ersatz für Kopierschutz

Die Lizenzierung von Google Play ist ein flexibler, sicherer Mechanismus zur Kontrolle des Zugriffs auf Ihre Apps. Sie ersetzt effektiv den Kopierschutz (nicht mehr unterstützt), der zuvor bei Google Play angeboten wurde, und bietet Ihnen ein größeres Vertriebspotenzial für Ihre Apps.

Mit der Lizenzierung kannst du zu einem lizenzbasierten Modell wechseln, das auf allen Geräten mit Zugriff auf Google Play durchsetzbar ist. 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 definierte Lizenzierungsrichtlinie. Ihre App kann auf jedem Gerät und jedem Speicher, einschließlich einer SD-Karte, installiert und verwaltet werden.

Obwohl kein Lizenzmechanismus jede unbefugte Nutzung vollständig verhindern kann, ermöglicht der Lizenzierungsservice den Zugriff für die meisten Arten der normalen Nutzung auf allen kompatiblen Geräten, ob gesperrt oder entsperrt.

Wenn Sie mit dem Hinzufügen einer App-Lizenzierung beginnen möchten, fahren Sie mit Einrichten der Lizenzierung fort.