Saltar al contenido
Proyectos

App de iPhone · anotador de dominó

App Store v1.2.1

Anota

Un anotador de iPhone para dominó dominicano por parejas, para no anotar en papel.

Marcador de Anota en plena partida: un equipo con 102 y el otro con 80.
Rol
Solo: diseño, código y publicación
Tiempo
Desde may 2026
Stack
TypeScript, Expo, React Native, StoreKit, AdMob, Jest

En el App Store, versión 1.2.1. Código público en GitHub. Estado verificado el 15 oct de 2026.

En números

5

pasos con timeout en el arranque de anuncios

3

niveles de diseño, según la altura útil de la pantalla

24

pruebas unitarias en 5 archivos

2

compras únicas: Quitar anuncios y Anota Pro

Fig. 1 Arranque de anuncios: cinco pasos, cada uno con su timeout
  1. 1 · límite 8 s Primer plano Espera que la app esté activa. Después sigue de todos modos.
  2. 2 · límite 15 s Consentimiento UMP Corre el flujo de consentimiento de UMP. Un error deja la decisión al paso 4.
  3. 3 · límite 5 s Estado de ATT Pide permiso de rastreo solo si iOS todavía no tiene respuesta. Un error deja anuncios no personalizados.
  4. 4 · límite 5 s Info de consentimiento Lee si se pueden pedir anuncios. Un no claro deja la app sin anuncios.
  5. 5 · límite 15 s Inicio del SDK Arranca el SDK de Google Mobile Ads. Un error deja la app sin anuncios.

Resultado

  • Listo El espacio del banner muestra un anuncio.
  • No listo Sin anuncios. La app funciona igual.

El marcador nunca espera por esta cadena: corre en segundo plano después de abrir la app, y una compra de Quitar anuncios o Anota Pro la salta.

La idea

Anota es un anotador de iPhone para dominó dominicano por parejas. Los dos equipos, el historial de manos y los controles caben en una sola pantalla, así nadie anota en papel.

Lo que construí

La app está hecha con Expo y React Native en TypeScript estricto. La lógica de la partida es un reducer puro: después de cada cambio, un paso de ajuste vuelve a calcular el ganador. Una partida guardada se revisa campo por campo antes de cargarla, así un archivo dañado no tumba la app. El español y el inglés comparten un solo tipo de diccionario.

Anota es gratis con un banner de anuncios y tiene dos compras únicas: Quitar anuncios a $1.99 y Anota Pro a $2.99, que quita los anuncios y desbloquea todos los temas. Los anuncios arrancan solo después de los pasos de consentimiento UMP y App Tracking Transparency. La pantalla del ganador genera una tarjeta de 1080 px con el marcador y abre el menú para compartir.

Lo difícil

  1. 01 Un arranque de anuncios que no bloquea el marcador

    El SDK de anuncios arranca en cinco pasos: esperar que la app esté en primer plano, el consentimiento UMP, el estado de App Tracking Transparency, la info de consentimiento y el inicio del SDK. Cada paso tiene su propio timeout, así una red lenta o una app trabada pasa a anuncios no personalizados o a ningún anuncio en vez de quedarse colgada.

    Dónde está en el código: src/ads/ads.ts (se abre en otra pestaña)

  2. 02 Compras que reportan el error correcto

    La capa de compras registra sus listeners antes de abrir la conexión con la tienda y le pone un timeout a cada llamada. Ignora los errores que llegan cuando no hay ninguna compra en curso, y reporta un producto que falta aparte de un pago que falló.

    Dónde está en el código: src/iap/purchases.ts (se abre en otra pestaña)

  3. 03 Una sola pantalla en cualquier iPhone

    El marcador nunca hace scroll. La app escoge uno de tres tamaños según la altura útil, después de restar el banner, así el diseño cabe en un iPhone SE aunque haya un anuncio.

    Dónde está en el código: src/layout/metrics.ts (se abre en otra pestaña)

Lo próximo

Preparar la versión de Android.

Pantalla de ganador de Anota al final de una partida, 202 a 80.
Teclado de Anota para anotar los puntos de una mano.

Pruébalo

Relacionados por idea