Uitrol 16-10-2026 15:41

This commit is contained in:
jf
2026-10-16 15:41:06 +02:00
parent e9fcd0a10c
commit bf56d8e025
15 changed files with 295 additions and 5 deletions
@@ -22,6 +22,9 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Camera en galerij, voor foto's bij een kluisitem en video's bij een moment.
Voor de galerij is geen recht nodig: de app gebruikt de fotokiezer van Android en leest
alleen wat de gebruiker zelf aanwijst. READ_MEDIA_IMAGES/VIDEO horen er daarom niet bij
(Google Play keurt die alleen goed voor apps die de hele galerij nodig hebben).
Hier stond eerder bewust niets: hoe minder rechten, hoe minder er mis kan gaan. Maar
zonder CAMERA meldt Android dat het toestel niet kan opnemen, en verdwijnt de knop
"Video opnemen" uit de app zonder dat er iets misgaat of iets over te zien is.
@@ -29,10 +32,8 @@
Wat er NIET bij staat en ook niet bij hoort: locatie, contacten, en het schrijven naar
de opslag van de telefoon. We lezen alleen wat de gebruiker zelf aanwijst. -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!-- Voor Android 12 en ouder; vanaf 13 doen de twee regels hierboven het werk. -->
<!-- Voor Android 12 en ouder. Vanaf Android 13 is dit niet nodig. -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
@@ -0,0 +1,18 @@
<?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>
<!-- Zonder dit kan SecureStorage (hier wordt de inlogsleutel in bewaard) in de simulator
niets wegschrijven: de Keychain geeft dan een fout, en de app lijkt bij elke start
uitgelogd. Op een echt toestel komt de toegangsgroep uit het provisioning profile.
$(AppIdentifierPrefix) en $(CFBundleIdentifier) vult de build zelf in. -->
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>
<!-- Meldingen (APNs) komen hier later bij, samen met het Developer-account:
<key>aps-environment</key><string>development</string>
Nu NIET toevoegen: zonder betaald account weigert Xcode dan te ondertekenen. -->
</dict>
</plist>
@@ -0,0 +1,92 @@
<?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>
<!-- Privacyverklaring van de app zelf (sinds mei 2024 verplicht voor nieuwe inzendingen).
Apple leest dit bestand uit de app en vergelijkt het met wat je invult bij "App Privacy"
in App Store Connect. Wijkt het af, dan komt er een afwijzing of een waarschuwingsmail.
Pas dit dus aan in dezelfde wijziging als een wijziging in Privacytekst.razor. -->
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<!-- Gegevens die de app verzamelt. Allemaal gekoppeld aan de gebruiker, nooit voor
tracking, alleen voor de werking van de app. -->
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeEmailAddress</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhotosorVideos</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherUserContent</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<!-- "Required reason"-API's. Apple wil per categorie weten waarom de app (of het .NET-
laag eronder) ze aanroept. Zonder deze lijst volgt een waarschuwing bij de inzending.
CA92.1 UserDefaults: de app leest en schrijft eigen instellingen (Preferences)
C617.1 bestandstijden: bestanden in de eigen app-container
E174.1 vrije schijfruimte: controle voor het schrijven van bestanden
35F9.1 opstarttijd: tijdmetingen binnen de app (.NET-runtime) -->
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>CA92.1</string></array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>C617.1</string></array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>E174.1</string></array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>35F9.1</string></array>
</dict>
</array>
</dict>
</plist>