2010-12-08 2 views
2

Ich arbeite an einer Client-iPhone-App, mit der Benutzer verschiedene Dienste bewerten können. Es gibt keine Registrierung oder Anmeldung.Abstimmung auf einer iPhone-App auf ein bestimmtes iPhone-Gerät beschränken

Die Anforderung ist, dass ein Benutzer einen Dienst nicht wiederholt bewerten kann (obwohl er seine Bewertung ändern kann). Wie es derzeit aussieht, könnte die App gelöscht, neu installiert werden und der Nutzer könnte erneut abstimmen.

Wir überlegten die Verwendung der Geräte-ID, aber ein Kollege erwähnt, dass Apple dagegen empfehlen. Wenn ich richtig verstanden habe, falls ein Telefon zum Speichern zurückgeschickt wurde, wurde es erneut ausgestellt und der neue Benutzer hat dann die gleiche App heruntergeladen. Scheint mir ein hübscher Randfall zu sein, aber ich denke, dass es innerhalb eines Unternehmens passieren könnte.

Gibt es eine intelligente Möglichkeit, die Abstimmung auf ein bestimmtes Gerät zu beschränken? Vielleicht mit dem Schlüsselbund?

Alle Hinweise sehr geschätzt.

Antwort

1

Es ist wichtig, den Unterschied zwischen einer UDID und einer UUID zu beachten.

UDID "eindeutige Geräte-ID" ist hardwarespezifisch. Es ändert sich nie für ein bestimmtes Gerät. Aus diesem Grund ist es zu einem Datenschutzproblem geworden und Apple blockiert Apps, die versuchen, dies zu nutzen. Als Ergebnis hat Apple einen Opt-Out-fähigen "Geräte-ID" -Hash generiert, insbesondere für die Verwendung von Werbung. Dieser neue ID-Hash heißt IFA und ist in iOS 6.0 und höher verfügbar.

UUID "universelle eindeutige ID" ist nicht hardwarespezifisch. Es ist ein Hash, der verwendet wird, um ein Gerät zu identifizieren. aber nicht besonders ein absoluter Wert. Beispielsweise generiert PhoneGap eine UUID basierend auf Geräteeigenschaften. Das bekommst du, wenn du device.uuid tust. Wenn Sie die App löschen und neu installieren, erhalten Sie einen neuen ID-Hash. UUID wird nicht von Apple blockiert.

Ich denke, die beste Lösung in Ihrem Fall wäre die Verwendung der IFA mit OpenUDID als Backup für iOS < 6.0.

Hier ist der Code, den wir verwenden. Wenn IFA nicht verfügbar ist, rufen Sie OpenUDID ab. Sie müssen OpenUDID installieren, lesen Sie mehr dazu hier, https://github.com/ylechelle/OpenUDID.

NSString* uuid = nil; 
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { 
    // IOS 6 new Unique Identifier implementation, IFA 
    uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 
} else { 
    // Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid 
    // Here I use OpenUDID (you have to import it into your project) 
    // https://github.com/ylechelle/OpenUDID 
    NSString* openUDID = [OpenUDID value]; 
    uuid = [OpenUDID value]; 
} 
+0

Ich hatte eine ähnliche Bedürfnisse. Was passiert, wenn eine gehackte App mir immer eine generierte UUID anstelle der originalen UUID schickt? Es gibt eine Möglichkeit, UUID wirklich anhand der installierten Original-App zu identifizieren. –

+0

Was passiert, wenn der Benutzer das Betriebssystem von 5.0 auf 6.0 aktualisiert? Erstes UDID aus OpenUDID und dann in IOS 6 und später wird es IdentifierForVendor verwenden. – Developer

Verwandte Themen