2011-06-20 5 views
2

J'ai besoin de suivre les utilisateurs de mon application mobile. Quand ils sont connectés en utilisant le wifi, ils ont une adresse IP statique qui ne change jamais - ce qui rend le suivi facile. Cependant, s'ils utilisent leur réseau mobile, leurs adresses IP changent à chaque requête, ce qui rend le suivi difficile.Meilleure façon de suivre les clients mobiles qui utilisent des adresses IP dynamiques

Je suis intéressé de voir comment d'autres ont pu aborder ce problème et mis en œuvre une stratégie de suivi appropriée dans cette situation?

EDIT: La solution doit être aussi sécurisée que possible pour éviter que les utilisateurs ne soient pas suivis.

Merci

Répondre

2

Je suppose que vous avez suivi dire que webservice sait que deux demandes sont différents du même utilisateur?

Si tel est le cas, il vous suffit d'utiliser les outils Web standard pour cela: Sessions et cookies. Faites en sorte que votre application génère un identifiant unique au lancement et envoyez cet identifiant unique en tant que cookie ou variable à chaque requête que vous envoyez à votre service Web. De cette façon, vous les identifiez vraiment de manière unique.

Notez également: Le Wifi peut vous donner une adresse IP statique dans le réseau dans lequel l'appareil est connecté, mais pas sur Internet. L'adresse IP externe (publique) que vous pouvez récupérer est celle de votre routeur. La plupart du temps et avec la plupart des fournisseurs d'accès Internet, si la connexion échoue pour une raison quelconque, le routeur se verra affecter une nouvelle adresse IP. En outre, si deux personnes utilisent le même routeur pour se connecter à votre service Web, elles auront la même adresse IP publique. La méthode habituelle pour être plus sécurisé est celle utilisée par la plupart des sites: L'UID utilisé pour authentifier un utilisateur est généré par le serveur web (et non l'application) lors de la première requête/authentification d'un utilisateur. session. Cet UID est transmis du serveur Web à l'application qui le renvoie à chaque demande. Cela limite le "vol de session" à la durée de la session. Les demandes qui n'envoient pas d'UID ou d'UID qui n'existent pas dans la base de données sont illégitimes.

EDIT 2: L'OP a ajouté dans le commentaire ci-dessous que ce qu'il veut vraiment est de limiter le nombre de demandes faites par un seul utilisateur dans un certain temps. Pratiquement, cela signifie identifier de façon unique un appareil. Une façon de procéder est de calculer un UID sur l'appareil au premier lancement et de le stocker sur l'appareil. Ensuite, envoyez cet UID au service Web à chaque demande. Le webservice sera responsable de limiter le nombre de visites par un UID spécifique.

Remarque: Faites attention à la manière dont vous générez l'UID. Android comme un Android_ID mais il est connu pour être parfois nul et de changer au fil du temps. Ce gars semble avoir trouvé un not to easily spoofable Device UID:

+0

Vous supposez correctement, je veux suivre les demandes du même utilisateur. J'ai également besoin d'une solution "sécurisée" qui empêchera les utilisateurs de contourner le suivi. J'aurais dû ajouter cela à la question initiale. – Mylo

+0

Ok, donc quand un utilisateur fait une demande à mon serveur, je retourne un UID avec la réponse (et enregistre son IP avec l'UID?), Je dois manquer quelque chose que l'utilisateur peut simplement changer son IP pour les demandes ultérieures de générer un nouvel UID? – Mylo

+0

Je pense que j'ai mal compris votre question depuis le début. Peut-être que vous devriez éditer votre question pour essayer d'expliquer ce que vous essayez de faire. Je pensais que vous vouliez suivre un utilisateur pendant une session pour vous assurer que tout ce qu'il fait n'affecte que son compte. Mais maintenant vous semblez être à la recherche d'une solution pour suivre un utilisateur pour la vie de l'application. Veuillez être plus précis sur ce que vous essayez de faire. – Yahel

0

Vous devriez être en mesure d'utiliser l'identifiant de l'appareil: http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId()

Edit: Ou créer un UUID la première fois l'application lancements, suggestions et informations ici: http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

+0

L'ID de l'appareil nécessite l'autorisation READ_PHONE_STATE que je ne veux vraiment pas utiliser. Je suppose que je pourrais utiliser un UUID mais il pourrait être facilement usurpé. J'aurais probablement dû ajouter à ma question initiale que j'ai aussi besoin d'une solution difficile à contourner par les utilisateurs. – Mylo

+0

Si vous savez que tous les appareils ont wifi, je suppose que vous pouvez stocker leur adresse mac lorsque cela est disponible. Comment un UUID généré par une application pourrait-il être facilement usurpé par vos utilisateurs? –

Questions connexes