Identifizieren eines iOS-Benutzers
Ich würde gerne ein Benutzerkonto erstellen, auf dem server für neue Benutzer der app, aber ich möchte auch nicht den Benutzer auffordern, geben Sie alles. Im Idealfall würde ich gerne diese automatische werden, wie mit Game Center.
Aber ich Frage mich, ob es möglich ist. Ist es etwas, das ich verwenden kann, um den Nutzer eindeutig zu identifizieren? Es ist höchst unwahrscheinlich, dass ich herausfinden kann der Benutzer die Apple ID. Auch die Geräte-ID identifiziert eindeutig das Gerät, nicht den Benutzer, so wäre es nutzlos, wenn der Benutzer über mehrere Geräte...
Ist es etwas anderes, das ich benutzen kann?
Thema Datenschutz - ich will nicht, um herauszufinden, was hinter der Rücken des Benutzers. Ich habe absolut kein problem mit Fragen, die Benutzer für den Zugriff auf Ihre Daten (und wenn es eine API, gewährt mir diese information, es wäre schön, wenn die API stellt diese selbst). Als Steve Jobs selbst sagte, dies ist, was Privatsphäre ist - zwingt die apps Fragen den Benutzer nach Erlaubnis, bevor Sie andere mit Ihren privaten Daten.
InformationsquelleAutor der Frage rid | 2012-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generiert einen UUID:
Nichts ist hier veraltet oder werden nicht gern gesehen, die von Apple-in der Tat, es ist die Art und Weise, die Sie vorschlagen, Sie tun es. Speichern Sie die generierte UUID in die Schlüsselanhänger, und es wird da sein-auch wenn der Benutzer deinstalliert und neu installiert die app. Die UUID ist eindeutig für das Gerät und die Zeit, zu der es generiert wurde.
Können Sie dann verwenden verschiedene Systeme, um die Benutzer-Gruppe Ihre Geräte zusammen -- iCloud, oder eine Art Schlüssel, den Sie liefern aus der server.
Glück!
Zusatz:
Hier ist, wie Speicher ich es im Schlüsselbund mit der uuid als Sie einen Benutzernamen und generieren ein zufälliges Kennwort:
Beachten Sie, dass all dies getan werden kann, ohne eine Eingabe vom Benutzer.
Update:
MCSMKeychainItem hat eine große Lösung für die Generierung der UUID und-Speicherung mit
[MCSMApplicationUUIDKeychainItem applicationUUID]
. Die Bibliothek hat auch[MCSMGenericKeychainItem genericKeychainItemWithService:service username:username password:password]
. Zusammen, diese Funktionen kümmern sich um alles, was oben erwähnt. Einfach zu installieren mit CocoaPods zu.InformationsquelleAutor der Antwort Erik
Ich bin überrascht, wie alt diese Frage ist, und wie keiner der Antworten eindeutig beantworten, (obwohl einige andeuten).
Die einfache Lösung ist die Verwendung der iCloud-Key-Value-Storewo können Sie speichern eine eindeutige Benutzer-ID, ohne jegliche Art von Authentifizierung oder Benutzer Informationen wie E-Mail-Adresse.
Das Ergebnis ist eine zufällige UUID (nichts, dass tatsächlich IDENTIFIZIERT den Benutzer), dass ist für jeden Benutzer unterscheiden, aber den gleichen Wert für mehrere Geräte registriert, um den gleichen iTunes-Konto.
Definieren wir ein Feld in unserer iCloud-KV-Store, nennen wir es "userID". Wenn die app gestartet wird, zuerst prüfen wir die userID. Wenn Sie da ist, dann sind wir mit unseren Benutzers, eindeutige ID. Wenn nicht, dann ist dies das erste mal, wir laufen für diesen Benutzer. Wir generieren eine zufällige UUID und speichern Sie es in der KV-Speichern unter Benutzer-id. Das ist alles dort ist zu ihm.
Unsere Erfahrung zeigt, dass diese UUID ist eindeutig pro iTunes-account. Wenn Ihre end-Nutzer sind mit der Familie teilen, die Konten zugewiesen werden verschiedene UUIDs (die möglicherweise oder möglicherweise nicht wünschenswert sein, aber es gibt nichts, was Sie dagegen tun können). Eine beliebige Anzahl von Geräten starten unter dem gleichen iTunes-Konto wird unter der gleichen UUID.
Dieser Ansatz ist völlig legitim und sollte von Apple genehmigt werden ohne Probleme.
Natürlich müssen Sie iCloud aktivieren Key-Value-store auf Xcode unter Capabilities, schalten Sie einfach auf die iCloud Wechseln.
Ist hier eine einfache Klasse, die dieses Konzept in Objective-C:
Und für die header-Datei:
Verwenden, alles, was Sie tun müssen, ist invoke:
Genießen.
InformationsquelleAutor der Antwort ldoogy
Radu
Ausgezeichnete Frage. Wir haben das Problem behoben, die Sie beschreiben, durch die Integration von Urban Airship (urbanairship.com) in unsere apps. Urban Airship bietet eine Wundertüte von Funktionen zur Unterstützung von in-app-Käufe, den Empfang, die Validierung, Abonnement-recovery, content-delivery -, und Apple Push Notification.
Einer der großen Dinge über Städtische Luftschiff ist es die Fähigkeit zu identifizieren, die ein "Benutzer", nicht ein Gerät, sondern ein "Nutzer" von E-Mail-Adresse. Es ist nicht wirklich eine angekündigte "feature"... eher ein Nebenprodukt der beabsichtigten Funktionalität.
Hier ist was wir gefunden haben, und wie können wir nutzen Städtische Luftschiff, das problem zu lösen, die Sie haben.
Wenn ein Benutzer Ihre app installiert, die hat Urban Luftschiff integriert, UA irgendwie erzeugt eine UDID-wie die Zahl, die im moment, einfach das Gerät identifiziert.
Jedoch, wenn Sie nutzen Sie die Abonnement-recovery-Komponenten von Urban Airship können Sie die Benutzer-geben Sie eine E-Mail-Adresse. Sobald die Benutzer Ihre E-Mail-Adresse auf das erste Gerät... dass die erzeugte ID wird Ihre main-Methode der Benutzer-Identifikation und ist in Verbindung mit diesem E-Mail-Adresse. Wenn Sie geben Sie Ihre E-Mail-Adresse auf die nachfolgenden Geräte, Städtische Luftschiff lösen eine E-Mail Validierung. Sobald der Benutzer abgeschlossen ist der Prozess der Validierung aktualisiert er die ID auf das neue Gerät die gleichen sein wie die ID des ersten Geräts und so weiter. Das beste daran ist... es ist alles auto-magisch! Sie einfach integrieren die Komponenten und die Benutzer, geben Sie Ihren E-Mail-Adresse. Sie sollten in der Lage sein, um Sie alle auf und arbeitet innerhalb einer Stunde.
Es bietet auch Funktionen, um dem Benutzer zu ermöglichen, ändern Sie die E-Mail-Adresse, die mit allen Ihren Geräten.
Haben wir tatsächlich umgesetzt und es funktioniert SEHR gut!
HINWEIS: ab 1. JULI 2013 Städtische Luftschiff ist abwertend das Abonnement & recovery-Funktionen
InformationsquelleAutor der Antwort radesix
Erzeugung einer UUID, wie Erik vorgeschlagen, ist definitiv eine solide Lösung. Der einzige (kleine) Nachteil könnte sein, dass im Falle einer vollständigen iDevice wiederherstellen, der Schlüsselbund wird abgewischt zu werden. Die Anwendung generiert eine neue UUID in diesem Szenario und dem iDevice können sich nicht auf eine vorhandene user mehr.
Einen anderen Ansatz, um eindeutig zu identifizieren, die ein iDevice wird zum generieren einer eindeutigen id basiert auf der MAC-Adresse der Netzwerk-Schnittstelle und verbinden Sie es mit dem app-bundle-id. Dieses Verfahren liefert eine eindeutige id, die für die Anwendung spezifischen und langlebig. Es wird sich nicht ändern, wenn das iDevice gelöscht, wiederhergestellt oder, wenn die app entfernt und neu installiert. Weil dieses, gibt es keine Notwendigkeit, speichern Sie diese id im Schlüsselbund.
Glücklicherweise gibt es bereits einige Leute, die haben eine kleine Bibliothek, dies zu erreichen. Der code ist auf GitHub zu finden:
https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
InformationsquelleAutor der Antwort Bas Peters
Alternative zu Erik ' s Vorschlag ist ein third-party-Bibliothek namens OpenUDID. Sie erstellen eine eindeutige id auf einer pro-Gerät-basis, und es ist tot einfach:
InformationsquelleAutor der Antwort Anthony
Wie wäre es mit game center und iCloud zusammen, um zu identifizieren, Benutzer?
Ist es weniger wahrscheinlich, eine Benutzer-nicht-Spiel und synchronisiert Ihre Daten.
InformationsquelleAutor der Antwort Mickey
Können Sie die Verwendung von third-party-Lösungen wie SECUREUDID schauen Sie sich auch diese
InformationsquelleAutor der Antwort msk
Es ist nicht absolut sicher, dass die Lösung (und funktioniert nur wenn iCloud aktiviert ist), aber es ist sehr einfach zu implementieren:
Generiert eine eindeutige ID einmal (wie UUID) und speichern Sie es in iCloud key-value-Speicher.
Das problem ist nur, dass fortgeschrittene Benutzer, die wissen, wie löschen Sie Inhalte aus der iCloud.
Um zu verhindern, dass der Benutzer nur die Bearbeitung der unique-ID in iCloud gespeichert sind, um jemand anderes-ID, die Sie hinzufügen können, eine Art Geheimnis.
InformationsquelleAutor der Antwort miho
Heute unsere APP wurde zurückgewiesen, weil der Game Center-Benutzer-Identifikation. Es ist im App Store Richtlinien: https://developer.apple.com/appstore/resources/approval/guidelines.html .
Können Sie nicht mit uniqe-Spiel-Center-ID in G: format.
Der einzige Weg für uns ist die Verwendung von iOS 6 Facebook integration.
UPDATE: Unsere neue version mit der automatischen FB-Anmeldung übergeben review-Prozess und ist erhältlich im App Store ( Slovni Duell ). Nutzt auch inApp-Abonnement verknüpft FB-Profil.
InformationsquelleAutor der Antwort Lubomir