App de iPhone · anotador de dominó
Anota
Un anotador de iPhone para dominó dominicano por parejas, para no anotar en papel.
- Rol
- Tiempo
- Stack
- Enlaces
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
- 1 · límite 8 s Primer plano Espera que la app esté activa. Después sigue de todos modos.
- 2 · límite 15 s Consentimiento UMP Corre el flujo de consentimiento de UMP. Un error deja la decisión al paso 4.
- 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 · límite 5 s Info de consentimiento Lee si se pueden pedir anuncios. Un no claro deja la app sin anuncios.
- 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
-
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.
-
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ó.
-
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.
Lo próximo
Preparar la versión de Android.
Pruébalo
Relacionados por idea
Reglas en un módulo sin imports de la interfaz
Español e inglés con las mismas llaves, verificado