Estrategia para contactos IOS rápidos "buscador de amigos"

Ejemplo:

  • Snapchat: agrega amigos (de contactos del teléfono)
  • Twitter: encuentra amigos (de contactos del teléfono)

No tengo problemas para extraer nombres, numbers de teléfono, direcciones de correo electrónico de los contactos del dispositivo IOS. He estado experimentando con diferentes enfoques y estrategias para:

  • Cargar contactos al server web
  • Compare la list con la database del server utilizando los numbers de teléfono y las direcciones de correo electrónico (no es necesario almacenar una copy)
  • Devuelve una list de contactos que también son usuarios y que no son

Mis bashs duran aproximadamente 30-45 segundos para 500 contactos. El mismo set de contactos tarda 2-5 segundos más o less para snapchat o Twitter para trabajar.

¿Cuál es su secreto? ¿Buena encoding obj-c? ¿Buen layout de database? Aprecio que tendrían stacks de hosting altamente eficientes, pero no esperaba ese tipo de diferencia horaria.

¿Es mejor para:

  1. Prueba una carga masiva de todos los contactos y devuelve una cadena json con éxitos y errores.
  2. ¿Una sola request HTTP para cada uno?
  3. ¿Abrir algún tipo de connection persistente como un websocket para verificar cada contacto?
  4. ¿Alguna otra estrategia o enfoque obvio que aún no he considerado?

    Creo que la key es hacer que la request sea más pequeña al utilizar una sola pieza de información de contacto para la búsqueda en lugar de usar nombres, numbers y direcciones de correo electrónico. Si su service requiere alguna de esas piezas para registrarse, como el número de teléfono, use solo el número de teléfono. Cuando devuelva información de su server, no envíe nada que no necesite, como los numbers de teléfono para los que no pudo encontrar una coincidencia.

    En segundo lugar, su opción # 3 no es una mala idea si tiene los conocimientos técnicos. Recomiendo una biblioteca llamada SocketRocket . Fue desarrollado por las personas que hacen Square y hace que la implementación de websockets en su front-end sea muy fácil.

    No puedo hablar con su back end, pero yo uso node.js y este package: https://github.com/einaros/ws Muy fácil de instalar ( npm install ws ) y también fácil de usar.