App de Apple Watch + 3 complicaciones (build 88) #48
App de watchOS de solo consulta: resumen de cartera (total, cambio del mes y mayores posiciones), objetivos con su progreso y estado del check-in con la racha. Toda la edición sigue en el iPhone. Complicaciones (accessoryCircular / Rectangular / Inline / Corner): valor total de la cartera, progreso del objetivo más cercano a cumplirse y racha + estado del check-in. Datos: los App Groups no se comparten entre iOS y watchOS, así que el reloj no puede leer el store de CoreData que lee el widget de iOS. En su lugar, WatchSyncService construye un WatchPortfolioSnapshot ligero y lo envía como application context de WatchConnectivity, enganchado a CoreDataStack.refreshWidgetData() — el mismo punto que refresca el widget de iOS, así que cualquier repositorio que toque datos refresca el reloj. WatchDataStore lo cachea en el App Group del watch (WatchSnapshotCache) y recarga las timelines; la extensión de complicaciones solo lee ese caché. Proyecto: dos targets nuevos (watchOS app + widget extension) con grupos sincronizados de Xcode 16; Shared/ pertenece a la app de watch y se comparte con la app de iOS y el widget mediante exception sets, el mismo mecanismo que ya usaba el widget de iOS para el modelo de CoreData. Scheme compartido PortfolioJournalWatch. Localización propia por target en los 7 idiomas. Verificado: compilan los tres targets, la app de watch queda embebida en Watch/ con la extensión en PlugIns/, y en el par de simuladores iPhone 17 Pro Max + Apple Watch Series 11 el reloj recibe y muestra el snapshot enviado por el iPhone. 10 tests nuevos del payload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YcDn5ccuRFV83q7xWWokBT
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
"watch_tab_summary" = "Riepilogo";
|
||||
"watch_total_value" = "Portafoglio";
|
||||
"watch_goals_title" = "Obiettivi";
|
||||
"watch_no_goals" = "Nessun obiettivo attivo";
|
||||
"watch_checkin_title" = "Check-in";
|
||||
"watch_checkin_done" = "Check-in completato";
|
||||
"watch_checkin_pending" = "Check-in in sospeso";
|
||||
"watch_streak" = "Serie";
|
||||
"watch_best_streak" = "Record";
|
||||
"watch_no_data_title" = "Ancora nessun dato";
|
||||
"watch_no_data_body" = "Apri Portfolio Journal sul tuo iPhone per sincronizzare.";
|
||||
"watch_updated" = "Aggiornato %@";
|
||||
"watch_refresh" = "Aggiorna";
|
||||
"watch_of_target" = "di %@";
|
||||
Reference in New Issue
Block a user