Nuevo: Explorador de fotos · Encuentre cualquier foto de viaje cartografiada.

Actualización del producto

Feliz 4 de julio: Logros de viaje y amigos de Mapsake.

¡Feliz 4 de julio a todos los que celebran en los Estados Unidos! Esta versión hace que un atlas privado sea más divertido con logros explicables y un intercambio intencional entre amigos.

Por. 10 minuto de lectura
Logros de Mapsake que muestran hitos de viaje que se pueden buscar y el progreso de las medallas.

¡Feliz 4 de julio!

¡Feliz 4 de julio a todos los que celebran en los Estados Unidos!

Esta actualización trata sobre dos formas en que un mapa de viajes privado puede volverse más vivo: los logros le dan al propietario nuevos patrones para observar en su propia historia, mientras que Mapsake Friends hace posible comparar esa historia con personas que realmente conoce.

Ninguna de estas funciones cambia la regla fundamental. Mapsake es, ante todo, un atlas personal. No hay un conteo público de seguidores, una tabla de clasificación global ni un feed diseñado para que extraños compitan entre sí.

160 razones para volver a mirar el mapa.

Mapsake ahora incluye aproximadamente 160 logros. Algunos son hitos familiares: un primer lugar marcado, cinco países, cada continente o una lista creciente de ciudades y aeropuertos. Otros describen grupos geográficos, cultura, naturaleza, ciencia, aviación y las formas menos obvias que se esconden dentro de un historial de viajes.

El catálogo es intencionalmente amplio. Una persona que realiza viajes por carretera a través de regiones cercanas aún debería encontrar un progreso significativo; el sistema no está reservado para alguien que intenta coleccionar todos los países.

En la interfaz, la evaluación de logros es un proceso determinista sobre el atlas. Cada logro define los lugares o umbrales que le interesan, Mapsake compara esa definición con el registro de Visitas y Lugares Vistos actual, y el resultado incluye el progreso, el estado desbloqueado, la fecha y el nivel de la medalla. No depende de un servicio de análisis ni de un motor de reglas remoto.

Este enfoque tiene una consecuencia útil: los logros funcionan sin conexión y se actualizan inmediatamente después de una importación o un cambio manual. También los hace probables. El mismo entorno de prueba siempre puede producir el mismo conjunto de logros.

El catálogo creció de 11 a aproximadamente 160.

El primer motor de logros se lanzó con hitos 11 sencillos. Fue suficiente para demostrar el ciclo: derive el progreso del mapa, destaque lo que se desbloqueó y muestre una barra de progreso para el resto. También era demasiado pequeño para ser interesante para cualquiera con un historial de viajes establecido.

La segunda iteración introdujo familias y grupos geográficos. Los hitos de conteo de países se convirtieron en una pila en lugar de una pared de tarjetas casi idénticas. La finalización continental y los grupos como la Unión Europea, el Espacio Schengen, el ASEAN, la 7, el Magreb y los países de Asia Central agregaron objetivos que se centraban en la forma del viaje, no solo en su volumen.

El catálogo se amplió luego para incluir artes, música, ciencia, tecnología, naturaleza, geología y economía. Ahí es donde comenzó a sentirse distintivamente como Mapsake. Un grupo de historia del jazz y un grupo del programa espacial pueden superponerse geográficamente mientras cuentan historias completamente diferentes sobre por qué esos lugares pertenecen juntos.

El desafío era evitar trivialidades arbitrarias. Cada grupo necesita una lista de membresía fija y defendible y una explicación que tenga sentido después de que la novedad desaparezca. La membresía reside en la fuente y no proviene de un servicio web cambiante, por lo que una actualización del catálogo se revisa y versiona como cualquier otro comportamiento del producto.

Alrededor de 160 hay suficiente información para hacer que la búsqueda y la organización sean necesarias. No es un objetivo que deba crecer indefinidamente. Un catálogo pequeño y coherente es mejor que miles de insignias procesadas que nadie puede entender.

Las fechas y familias de desbloqueo cambiaron la interfaz.

Cuando el catálogo alcanzó aproximadamente 80 elementos, una cuadrícula normal dejó de funcionar. Múltiples umbrales de la misma familia eclipsaron todo lo demás, y un usuario habitual no pudo determinar cuál era la actualización.

Mapsake ahora agrupa los logros obtenidos dentro de una familia en una pila, con el nivel más alto en la parte superior. Al expandirla, se muestran los hitos anteriores. Los logros bloqueados permanecen visibles como objetivos, pero la ordenación predeterminada muestra primero los que están más cerca de completarse.

Las fechas de desbloqueo se registran la primera vez que se cumple un logro. Persisten en evaluaciones posteriores y viajan dentro de la instantánea del amigo, lo que permite que la página de logros de un amigo muestre cuándo sucedió algo sin exponer un registro privado de eventos. Los usuarios existentes se establecen como línea de base en la primera ejecución, por lo que la instalación de la actualización no produce una lluvia de confeti para cada hito que su mapa anterior ya cumplió.

Ese comportamiento predeterminado surgió de tratar la migración como parte de la función. Un motor técnicamente correcto que anunciara 70 "logros" nuevos al inicio se sentiría defectuoso, incluso si cada insignia fuera matemáticamente merecida.

El progreso debe ser comprensible.

Una pared de iconos bloqueados no es muy útil, por lo que la pestaña de Logros está organizada con explicaciones:

  • Busque por nombre y filtre por categoría o continente.
  • Ordene por lo que esté más cerca, desbloqueado recientemente o ya completado.
  • Abre un logro para ver su descripción, lugares de miembros, mapa y progreso actual.
  • Avance a través de los niveles de bronce, plata, oro y platino, donde una familia los apoya.
  • Mantenga presionada una insignia para crear una tarjeta de uso compartido sin publicar nada automáticamente.

Las celebraciones de desbloqueo son breves y táctiles, y todos los detalles permanecen disponibles posteriormente. El tono es deliberadamente ligero y, a veces, un poco nerd. Debería sentirse como descubrir algo sobre el mapa, no como recibir una evaluación de desempeño.

La pantalla de detalles también resolvió un problema de confianza. Un título como "Five Eyes" o "Ring of Fire" no es autoexplicativo para todos. Al abrirlo, se muestra la descripción completa, la región del mapa, los países del grupo, cuáles se consideran completados y el rango de fechas de visita, cuando esté disponible. Para las familias de niveles, el bronce hasta el platino comunican el progreso sin requerir cuatro sistemas visuales no relacionados.

El mapa resalta deliberadamente los países no visitados, así como los visitados. Es más fácil comprender el progreso cuando una persona puede ver que un objetivo está a un país vecino en lugar de simplemente leer "8 de 9".

Una celebración no puede controlar la navegación

Un detalle de implementación se hizo evidente durante las pruebas: las celebraciones de logros se comportaban originalmente como un resumen modal. Las tarjetas parecían pulsables, pero la capa de celebración no contenía suficiente estado de navegación para abrir de manera confiable el detalle subyacente.

La corrección fue tratar cada premio como la misma identidad de logro utilizada por el catálogo principal y redirigirlo a la pantalla de detalles existente. La "celebración" sigue siendo una presentación temporal; el modelo de logro sigue siendo la fuente duradera. Es un pequeño ejemplo de una regla más amplia de Mapsake: los efectos especiales deben estar sobre el producto, no bifurcarlo.

Amigos, sin construir una red social

Mapsake Friends comienza con una invitación, no con un directorio que se puede buscar. Un enlace contiene un código de uso compartido privado en lugar de un nombre o una cuenta. Abrirlo crea una conexión mutua: cada persona puede ver el mapa compartido de la otra dentro de Mapsake.

Los enlaces funcionan bien a larga distancia, mientras que los códigos QR y el descubrimiento cercano cubren el momento en que dos personas están en la misma habitación. La aplicación publica una instantánea de viaje compacta para la conexión en lugar de intentar sincronizar dos bases de datos locales completas.

El primer modelo de uso compartido no era lo suficientemente confiable.

Originalmente, los amigos utilizaban una compartición CloudKit separada para cada relación. Esto parecía atractivo porque CloudKit gestionaba las invitaciones de acceso, pero dificultaba la amistad mutua. Una persona podía aceptar una compartición sin que el remitente original recibiera una ruta confiable, y la URL de uso compartido del sistema era difícil de convertir en un flujo predecible dentro de la aplicación.

El modelo de reemplazo le da a cada perfil un registro de mapa compartido y estable al que se accede mediante un código opaco. Un enlace de invitación abre el registro del amigo, almacena una instantánea, publica el propio mapa del receptor y escribe una pequeña solicitud de regreso al código original. Las actualizaciones en primer plano y en segundo plano completan la conexión mutua.

La primera versión de ese reemplazo utilizó el código estable directamente en el enlace. Funcionó, pero un enlace podría reutilizarse indefinidamente si escapaba de la conversación prevista. Ahora hay tokens de invitación únicos frente a la identidad del mapa estable. Un token consumido no se puede reutilizar, mientras que la amistad subyacente puede seguir actualizándose.

Este es un ejemplo de cómo el producto y la infraestructura cambian juntos. “Compartir mi mapa” es solo un botón en la interfaz, pero debajo de él hay enrutamiento de enlaces universales, búsqueda de registros de CloudKit, manejo de solicitudes mutuas, almacenamiento en caché local, desduplicación y un mensaje claro de éxito o fracaso. Ocultar esa maquinaria es el trabajo; pretender que no existe haría que las fallas fueran imposibles de explicar.

El perfil de un amigo tiene mucha profundidad. Puede incluir un mapa interactivo, un Pasaporte con controles de lente, región y año, logros y una vista de comparación que muestra la superposición y los lugares únicos de cada persona. Un punto de ubicación en casa se excluye a menos que su propietario opte explícitamente por compartirlo.

La pantalla de amigos inicialmente reutilizó un globo y un resumen más simples. Esto rápidamente se sintió como una vista previa en lugar de una relación. La superficie actual utiliza la misma configuración de mapa que el Atlas del propietario, los mismos cálculos de pasaporte y el mismo modelo de detalles de logros con una fuente de datos diferente.

La reutilización de estos componentes reveló una abstracción útil: las pantallas de mapas y pasaportes deben consumir datos de viaje, no asumir que los datos pertenecen al perfil local conectado. Una vez que la función de instantáneas de amigos implementó esta interfaz, el filtrado, los rangos de fechas, los ámbitos continentales, el progreso de los logros y las comparaciones podrían compartir el mismo comportamiento sin otorgar a un amigo acceso a la base de datos subyacente del propietario.

Hub un error de navegación menos glamoroso en el camino. Una fila de "amigos" estaba vinculada directamente a un objeto de modelo de SwiftData, pero la sincronización de CloudKit podría reiniciar ese objeto y cambiar su identidad justo cuando comenzaba la navegación. Usar el ID estable del amigo para la navegación solucionó el problema de la pulsación aparentemente inactiva. Los errores de datos distribuidos a menudo aparecen como errores comunes de la interfaz de usuario.

Las fotos de perfil siguieron la misma regla de captura de instantáneas. Un pequeño avatar se puede publicar con el perfil compartido y actualizarse después de una edición. Si no se establece una foto, las iniciales se utilizan como opción predeterminada. Mapsake solicita un nombre y una foto reconocibles antes de la primera invitación, pero ninguno de los dos es obligatorio.

Un feed de cambios significativos.

La pestaña de amigos no es un flujo de publicaciones subidas. Mapsake compara periódicamente la última instantánea de un amigo con la que ya está almacenada en el dispositivo. Si un amigo ha agregado lugares o desbloqueado logros, esas diferencias se convierten en un pequeño feed de actividad local.

Este enfoque de comparación de instantáneas mantiene la función simple. Los amigos no necesitan crear una publicación cada vez que su atlas cambia, y Mapsake no necesita un sistema de clasificación de contenido. El feed registra un evento útil porque el historial de viajes subyacente ha cambiado.

También evita agregar otro tipo de registro de CloudKit para cada evento de la fuente de datos. La aplicación ya tiene las instantáneas antiguas y nuevas. Comparar sus identificadores de ubicación y desbloqueos de logros puede derivar los cambios interesantes localmente, y luego mantener una fuente de datos limitada en una pequeña tienda JSON en el dispositivo.

Las adiciones de lugares y las desbloqueos de logros se agrupan en ráfagas separadas, incluso cuando llegan en una sola actualización. Esto evita que una importación grande genere docenas de filas casi idénticas y hace que el feed se vea como "Emma agregó Japón, Kioto y dos más" en lugar de un registro de transacciones de base de datos.

Las notificaciones se pueden habilitar por filtro de viaje con un período de enfriamiento, por lo que una gran cantidad de historial importado no se convierte en una gran cantidad de alertas. El desplazamiento para actualizar sigue estando disponible cuando alguien quiere verificarlo deliberadamente.

La privacidad es parte de la función, no un descargo de responsabilidad.

Los historiales de viajes pueden revelar hogares, rutinas y planes futuros. Por lo tanto, la función de amigos debe ser más explícita que una función social convencional:

  • Para agregar a alguien, se requiere una invitación, un escaneo de código QR o un intercambio cercano.
  • La carga compartida contiene los datos del mapa necesarios para la experiencia de amigos, no una copia de la biblioteca de fotos.
  • El uso compartido en la pantalla de inicio es independiente y está desactivado de forma predeterminada.
  • Eliminar un amigo elimina la relación local y su actividad en caché.
  • Para usar Mapsake, no necesitas una cuenta de Mapsake.

La instantánea de un amigo nunca incluye bytes de foto originales. Contiene las marcas de viaje, los campos de perfil, la información de la lente, las fechas necesarias para las estadísticas específicas y las desbloqueos de logros necesarios para las superficies que el amigo puede abrir. Esa frontera evita que una experiencia rica se convierta accidentalmente en un servicio de intercambio de fotos.

Mapsake: Distingue el uso compartido con amigos de un enlace público para el navegador. Una conexión de amigo es mutua y se encuentra dentro de la aplicación. Un mapa público es un artefacto opcional separado para alguien que desea un enlace de solo lectura. Activar uno no activa automáticamente el otro.

Los Logros y los Amigos hacen que el atlas sea más divertido, pero no lo convierten en un perfil público. Esa distinción es lo suficientemente importante como para repetirla a medida que la aplicación crece.

Pruebe la actualización

Abrir Logros para buscar en todo el catálogo y ver qué está más cerca. Luego, abra Amigos, comparta un enlace de invitación o use la opción de ubicación cercana y código QR, y compare mapas con alguien que conozca.

El mejor resultado no es una puntuación más alta. Es una conversación: el lugar que ambas personas amaron, la región que una persona nunca había considerado, o el pequeño logro inusual que ninguno sabía que estaba a punto de alcanzar.

Ícono de la aplicación Mapsake

Desarrollador independiente de Mapsake, que escribe sobre el producto, el mapeo, la privacidad y el trabajo de la plataforma Apple detrás de la aplicación.

Crea tu propio atlas.

Comience con el historial de viajes que ya tiene.

Mapsake es gratuito, no requiere una cuenta de Mapsake para su uso principal y mantiene el reconocimiento de fotos admitido en su dispositivo.

Obtén Mapsake gratis