2 Stimmen

Abrufen einer eindeutigen Geräte-ID mit phonegap

Ich entwickle eine Anwendung mit phonegap für ios und Android. Meine Anwendung wird eine kostenlose Testversion mit 5 Artikeln haben, für jeden weiteren Artikel muss der Benutzer bezahlen.

Mein Problem ist, dass ich mit meiner App keine eindeutige Kennung des Geräts erhalten kann, so dass ein Benutzer die 5 kostenlosen Artikel verwenden kann, dann die App deinstalliert und neu installiert und weitere 5 kostenlose Artikel erhält.

Ich habe versucht, die device.udid zu verwenden, die von der phonegap api bereitgestellt wird, aber sie ändert sich jedes Mal, wenn ich sie neu installiere.

Irgendwelche Ideen?

5voto

Cliff Ribaudo Punkte 8675

Ermitteln Sie die MAC-Adresse des Geräts und führen Sie einen SHA1-Hash durch, um sie zu verschleiern. Es gibt Open-Source-Code für Android- und iOS-Geräte, um dies zu erreichen.

Und diese Art von Lösung funktioniert unabhängig davon, ob Sie in Zukunft weiterhin PhoneGap verwenden oder nativen Code schreiben. Auch Apple hat keine Probleme damit, was den App-Review-Prozess angeht.

UPDATE: Dies war die richtige Antwort bis und mit iOS 6, aber für alle Versionen des iOS SDK, die größer als 6 sind, ist dies NICHT MEHR MÖGLICH. Jeder Versuch, die Low-Level-Aufrufe zu verwenden, die früher funktionierten, geben jetzt IMMER eine MAC-Adresse von 2 zurück. Die Werbe-ID und das AdSupport.framework sind die einzige Möglichkeit. Wenn Sie ein jailbroken Telefon haben und Root-Rechte erhalten können, könnte es noch funktionieren. Nicht sicher.

1voto

Cruceo Punkte 6676

Ich persönlich finde, dass die beste Methode für eine eindeutige Android-ID darin besteht, eine zufällige Zeichenkette mit 16 bis 26 alphanumerischen Zeichen zu generieren, zu überprüfen, ob sie auf Ihrem Server nicht bereits existiert, und sie dann in den lokalen Einstellungen zu speichern.

Ich habe mit anderen Möglichkeiten experimentiert, um eine eindeutige ID zu erhalten (IE. TelephonyManager), aber alle, die ich kenne, haben die Chance, null zurückzugeben (was überhaupt nicht gut ist). Wenn jemand eine bessere Möglichkeit hat, die nicht potenziell null zurückgeben kann, würde ich gerne hören es.

1voto

Soumyadip Das Punkte 1759

Verwenden Sie die IMEI des Geräts wie folgt.

Aktivitätsdatei:

public class Welcome extends Activity {

    private TextView display;
    private Button checkAgain;
    private TelephonyManager telephonyManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        display = (TextView) findViewById(R.id.display);
        checkAgain = (Button) findViewById(R.id.buttonCheckAgain);

        display.setText("");

        telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        updateDisplay();

        checkAgain.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                updateDisplay();
            }
        });

    }

    private void updateDisplay() {
        display.setText(getDeviceID(telephonyManager));
        System.out.println("Display upadated");
    }

    private String getDeviceID(TelephonyManager phonyManager) {

        String id = phonyManager.getDeviceId();
        if (id == null) {
            id = "not available";
        }

        int phoneType = phonyManager.getPhoneType();
        switch (phoneType) {
        case TelephonyManager.PHONE_TYPE_NONE:
            return "NONE: " + id;

        case TelephonyManager.PHONE_TYPE_GSM:
            return "GSM: IMEI=" + id;

        case TelephonyManager.PHONE_TYPE_CDMA:
            return "CDMA: MEID/ESN=" + id;

        default:
            return "UNKNOWN: ID=" + id;
        }
    }
}

und Sie brauchen diese Erlaubnis:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X