Monitoruje najnowsze wydania systemów Apple (iOS, iPadOS, macOS, watchOS, tvOS) oraz Xcode. Działa lokalnie w aplikacji i przez GitHub Actions, aby wykrywać nowości nawet bez uruchamiania aplikacji.
- Xcode 15+ (iOS 17+)
- Swift 5.9+
- macOS 14+
- XcodeGen do wygenerowania projektu Xcode z
project.yml(opcjonalnie można stworzyć projekt ręcznie)
- Zainstaluj XcodeGen (jeśli nie masz):
brew install xcodegen- Wygeneruj projekt Xcode:
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
cd "apple check"
xcodegen generate
open AppleCheck.xcodeproj- Ustaw schemat
AppleChecki uruchom na iOS 17+.
project.yml– definicja projektu XcodeGenAppleCheck/– kod aplikacji SwiftUI (MVVM, Core Data-in-code, BGTaskScheduler, powiadomienia)scripts/check_updates.py– skrypt detekcji dla GitHub Actionsscripts/sources.yaml– definicje źródeł OTA/WWW/RSS.github/workflows/check_updates.yml– workflow uruchamiany co 5 min
- Pobieranie danych z OTA (MESU/SoftwareUpdate) i WWW (Apple Developer News Releases HTML + RSS, Apple Support About updates, Apple Newsroom)
- Autodiscovery kanałów i „majorów” (dynamiczne rozwijanie źródeł)
- Scalanie danych z priorytetem: OTA > WWW
- Stany:
device_first,announce_first,confirmed - Tryb re-check co minutę przez 30 minut dla stanów przejściowych
- Historia w Core Data (model programowy, bez .xcdatamodeld)
- BGTaskScheduler do tła, UNUserNotificationCenter do powiadomień lokalnych
- Logi do konsoli i pliku
W plikach znajdują się komentarze po polsku (szukaj sekcji "Instrukcja:"):
- Jak dodać nowy katalog OTA/URL WWW:
AppleCheck/Services/Sources.swift - Jak zmienić częstotliwość odświeżania:
AppleCheck/Views/SettingsView.swiftiAppleCheck/ViewModels/SettingsViewModel.swift - Jak włączyć/wyłączyć kanały:
AppleCheck/Views/SettingsView.swiftiAppleCheck/Models/Channel.swift
- Jeśli chcesz wysyłać webhook po wykryciu nowej wersji, ustaw sekrety repo:
WEBHOOK_URL– endpoint do POST JSONWEBHOOK_TOKEN– opcjonalnie token do autoryzacji (trafia w nagłówkuAuthorization: Bearer <token>)
- OTA: wykorzystujemy publiczne katalogi MESU (iOS/iPadOS/watchOS/tvOS) i SoftwareUpdate (macOS). Implementacja obsługuje ETag/If-Modified-Since.
- WWW: parsujemy RSS (
https://developer.apple.com/news/releases/rss/releases.rss), HTML (https://developer.apple.com/news/releases/) i strony wsparcia Apple.
MIT