- Leitor bíblico consumindo a API NBV (bible.falehandix.com.br): lista de livros por testamento e leitura de capítulos - Plano de 180 dias com três trilhas diárias (História, Sabedoria e Profetas, Novo Testamento) geradas deterministicamente sobre o cânon embutido (1.189 capítulos, cobertura testada) - Lembrete diário via notificação local recorrente (UNCalendarNotificationTrigger, identificador fixo, sem duplicatas), com pedido de autorização em contexto, configurações de horário/som, e deep link da notificação para a Leitura de Hoje - Estado do plano em SwiftData: progresso, pausa/retomada, reinício e conclusão preservando preferências do lembrete - 15 testes unitários (Testing) e 2 testes de UI (XCUIAutomation) - Ícone do app a partir do logo biblia.png Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
966 B
Swift
36 lines
966 B
Swift
//
|
|
// Bible_WeekApp.swift
|
|
// Bible-Week
|
|
//
|
|
// Created by Matheus A Silveira on 04/09/26.
|
|
//
|
|
|
|
import SwiftUI
|
|
import SwiftData
|
|
import UserNotifications
|
|
|
|
@main
|
|
struct Bible_WeekApp: App {
|
|
@State private var router: AppRouter
|
|
// Referência forte: o UNUserNotificationCenter guarda o delegate como weak.
|
|
private let notificationCoordinator: NotificationCoordinator
|
|
|
|
init() {
|
|
let router = AppRouter()
|
|
let coordinator = NotificationCoordinator(router: router)
|
|
// Registrado no launch para o toque na notificação funcionar
|
|
// também quando o app estava fechado.
|
|
UNUserNotificationCenter.current().delegate = coordinator
|
|
self.notificationCoordinator = coordinator
|
|
self._router = State(initialValue: router)
|
|
}
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
ContentView()
|
|
.environment(router)
|
|
}
|
|
.modelContainer(for: ReadingPlanState.self)
|
|
}
|
|
}
|