Aggiunge app iOS nativa con parità multi-sport e test unitari.

Porting SwiftUI da Android (auth, hub, wizard, broadcast RTMP, overlay, scoring board-aware), reload hub al ritorno da diretta, decodifica score tollerante e documentazione allineata.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Emiliano Frascaro
2026-06-14 21:37:32 +02:00
co-authored by Cursor
parent b798e0ea06
commit 585332e32e
101 changed files with 7910 additions and 5 deletions
@@ -0,0 +1,6 @@
{
"colors" : [
{ "color" : { "color-space" : "srgb", "components" : { "alpha" : "1.000", "blue" : "0.176", "green" : "0.176", "red" : "1.000" } }, "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

@@ -0,0 +1,6 @@
{
"images" : [
{ "filename" : "AppIcon.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
@@ -0,0 +1 @@
{ "info" : { "author" : "xcode", "version" : 1 } }
@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale_2.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale_3.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale_4.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale_5.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "CopertinaCanale_6.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "logo-dark-gradient-256.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "logo-dark-gradient.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "logo-white-m-256.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -0,0 +1,8 @@
{
"images" : [
{ "filename" : "logo-white-m.png", "idiom" : "universal", "scale" : "1x" },
{ "idiom" : "universal", "scale" : "2x" },
{ "idiom" : "universal", "scale" : "3x" }
],
"info" : { "author" : "xcode", "version" : 1 }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_BASE_URL</key>
<string>https://www.matchlivetv.it</string>
<key>CFBundleDevelopmentRegion</key>
<string>it</string>
<key>CFBundleDisplayName</key>
<string>Match Live TV</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.0.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.matchlivetv.match-live-tv</string>
<key>CFBundleURLSchemes</key>
<array>
<string>matchlivetv</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>21</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Match Live TV usa la fotocamera per trasmettere le partite in diretta.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Match Live TV usa il microfono per l'audio della diretta.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Match Live TV usa le foto per i loghi delle squadre.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
<key>UILaunchScreen</key>
<dict>
<key>UIColorName</key>
<string></string>
<key>UIImageName</key>
<string>logo-dark-gradient-256</string>
</dict>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>