2013-02-25 3 views
13

Ich habe eine Android App veröffentlicht.Beschränken (Einschränken) App-Installationen pro Konto (durch eindeutige Geräte bestimmt) in Android

Problem ist, wenn jemand meine App kauft, kann er es auf mehreren Geräten mit dem gleichen Konto installieren.

Kann ich die Installation auf ein paar (sagen wir 2) einzigartige Geräte pro Konto beschränken?

Wenn der Benutzer es auf einem anderen Gerät mit demselben Konto verwenden möchte, muss er zuerst von einem anderen Gerät deinstallieren.

Zum Beispiel MyBackup Pro only allows two unique devices.

Wie kann ich dies in meiner app erreichen?

+1

Die meisten Benutzer würden wahrscheinlich erwarten, dass die App auf allen ihren Geräten funktioniert. Wenn Sie einen Grund wie MyBackup Pro haben (z. B. jedes Gerät fügt Speicher- und Übertragungskosten hinzu), dann denke ich, solange Sie es klar machen, bevor ein Benutzer kauft, ist es in Ordnung. Wenn Sie keinen Grund haben, solche Geräte einzuschränken, würde ich sagen, tun Sie es nicht, um die Benutzerfreundlichkeit nicht zu beeinträchtigen. – Alec

Antwort

2

Sie können das Gerät beispielsweise über die MAC-Adresse des WLAN-Moduls oder über die IMEI identifizieren (beide können über Android-Systemdienste abgerufen werden). Als nächstes identifizieren Sie die Installation mit Ihrem Server. Wenn der Server antwortet, dass dieser Benutzer/Kunde diese bereits auf einem anderen Gerät installiert hat, sperren Sie die App und teilen dem Benutzer mit, was los ist.

+0

Ich möchte keinen Server dafür unterhalten. Ich würde lieber überprüfen, ob Google dies mit ihrem Manifest oder Servern erlaubt (wie Google Licsensing tut) – Programer

+0

Wie würde eine Installation Ihrer App wissen, dass es bereits eine andere Installation der App auf einem anderen Gerät gibt? Google könnte eine solche Funktion bieten, aber ich denke nicht, dass sie das tun. – FWeigl

+0

Ich habe bereits Google Licensecing verwendet. Sie stellen einen Server zur Verfügung, und das Programm überprüft, ob die Datei von einem Computer auf einen anderen kopiert wird, und zwar mit den Google Server-Diensten (überprüft, ob dieser Computer oder dieses Konto diese App gekauft hat). Ich möchte, dass dieser Server auch legale Einkäufe begrenzt und nicht nur Piraterie. – Programer

10

Google helps you do this.

This page helps you set it up.

Insbesondere it looks like you want to add a DeviceLimiter:

In einigen Fällen können Sie Ihre Politik wollen die Zahl der tatsächlichen Geräte zu begrenzen, die eine Lizenz nutzen dürfen. Dies würde verhindern, dass ein Benutzer eine lizenzierte Anwendung auf eine Anzahl von Geräten verschiebt und die Anwendung auf diesen Geräten unter derselben Konto-ID verwendet. Es würde auch verhindern, dass ein Benutzer die -Anwendung "gemeinsam nutzt", indem er die mit der -Lizenz verknüpften Kontoinformationen anderen Personen zur Verfügung stellt, die sich dann auf ihren Geräten auf diesem Konto anmelden und auf die Lizenz für die Anwendung zugreifen können.

Die LVL unterstützt die Lizenzierung pro Gerät, indem sie eine DeviceLimiter Schnittstelle bereitstellt, die eine einzige Methode, allowDeviceAccess(), deklariert. Wenn ein LicenseValidator eine Antwort vom Lizenzierungsserver verarbeitet, ruft er auf allowDeviceAccess() auf und übergibt eine Benutzer-ID-Zeichenfolge, die aus der -Antwort extrahiert wurde.

Wenn Sie die Geräteeinschränkung nicht unterstützen möchten, ist keine Arbeit erforderlich - Die LicenseChecker-Klasse verwendet automatisch eine Standardimplementierung namens NullDeviceLimiter. Wie der Name andeutet, ist NullDeviceLimiter eine "no-op" -Klasse , deren allowDeviceAccess() -Methode einfach eine LICENSED-Antwort für alle Benutzer und Geräte zurückgibt.

Achtung: Pro-Gerät Lizenzierung für die meisten Anwendungen empfohlen nicht, weil:

Es erfordert, dass Sie einen Back-End-Server bieten einen Benutzer und Geräte-Mapping zu verwalten, und es könnte in einem Benutzer seine versehentlich führen Zugriff auf eine Anwendung verweigert, die sie berechtigt erworben haben auf einem anderen Gerät.

Der Quellcode für DeviceLimitercan be found here.

Die Quelle ziemlich erklärt, wie Sie über die Verwendung DeviceLimiter gehen würden, zu implementieren, was Sie wollen:

/* The LICENSED response from the server contains a user identifier unique to 
* the <application, user> pair. The developer can send this identifier 
* to their own server along with some device identifier (a random number 
* generated and stored once per application installation, 
* {@link android.telephony.TelephonyManager#getDeviceId getDeviceId}, 
* {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc). 
* 
* The more sources used to identify the device, the harder it will be for an 
* attacker to spoof. 
3

Beiden Ascorbin und yarian Antworten sind schön erklären.

Nach meinem Wissen kann es auf zwei Arten verwaltet werden.

1. Mit Google es selbst

2. Durch eine eigene Implementierung

Lets einzeln überprüfen,

1. Mit Google es Selbst

Ascorbins Antwort erklärt gut, wie man es implementiert und wie Google es verwaltet. Also hoffe, du hast es verstanden. Wenn nicht, lass es mich wissen.

2. Durch eine eigene Implementierung

Wenn Sie Ihren eigenen Server haben, dann können Sie Code setzen, die für die installierten App-Geräte prüfen. Jedes Gerät verfügt über eine eindeutige IMEI-Nummer, so dass Sie problemlos die gleiche IMEI-Nummer verfolgen und die Installation der App oder die Arbeit der App blockieren oder zulassen können.

Hinweis: Mit Google können Sie dieselbe App auf einem anderen Gerät verwenden, wenn das Gerät dasselbe Konto konfiguriert hat. In diesem Fall kann es nur möglich sein, indem derselbe Account mit einer anderen IMEI- oder MAC-Adresse erkannt wird.

Hoffe, du hast den Punkt verstanden.

Fühlen Sie sich frei zu kommentieren. :)

Verwandte Themen