diff --git a/docs/appstore/appstore-vermelding.txt b/docs/appstore/appstore-vermelding.txt new file mode 100644 index 0000000..3a41bba --- /dev/null +++ b/docs/appstore/appstore-vermelding.txt @@ -0,0 +1,81 @@ +APP STORE-VERMELDING - MijnBesluit (nl.mijnbesluit.app) +Taal: Nederlands (Nederland). Concept; in App Store Connect onder Distribution > de versie. +Afgeleid van docs\playstore\winkelvermelding.txt, met de limieten van Apple. + +NAAM (max 30) - nu 11 +MijnBesluit + +ONDERTITEL (max 30) - nu 30 +Wachtwoorden en wensen bewaard + +PROMOTIETEKST (max 170, mag altijd worden aangepast zonder nieuwe versie) - nu 145 +Wachtwoorden, wensen en berichten veilig bewaard, en pas vrij te geven wanneer jij dat wilt. Inloggen zonder wachtwoord, met een code per e-mail. + +TREFWOORDEN (max 100, komma's zonder spaties; woorden uit de naam en ondertitel niet herhalen) - nu 99 +kluis,wachtwoorden,nalatenschap,uitvaart,testament,berichten,familie,polissen,overlijden,documenten + +BESCHRIJVING (max 4000) - nu 2689 +Er zit van alles in je hoofd waar niemand anders bij kan. Het wachtwoord van je e-mail, waar de polissen liggen, hoe je je uitvaart voor je ziet, en de dingen die je nog tegen iemand had willen zeggen. Zolang alles goed gaat maakt dat niet uit. Gaat het niet goed, dan staan de mensen die van je houden met lege handen, op het slechtst denkbare moment. + +MijnBesluit is de plek waar dat wél ergens staat. Veilig opgeborgen zolang het van jou alleen is, en beschikbaar op het moment dat jij hebt bepaald. + +WAT KUN JE ERMEE? + +Je kluis +Bewaar wachtwoorden voor websites en apparaten, de pincode van je telefoon, je sociale media, polissen, documenten en je uitvaartwensen. Alles wordt versleuteld opgeslagen. Per onderdeel kies je zelf of het alleen voor jou is, pas na je overlijden vrijkomt, of op een datum die jij bepaalt. + +Je mensen +Maak profielen aan voor de familie en vrienden die erbij horen en nodig ze uit. Zodra iemand de uitnodiging accepteert, is het profiel van hem of haar en vult die persoon zijn of haar eigen MijnBesluit in. + +Momenten +Zet een bericht of video klaar voor iemand, om te bezorgen op een datum die jij kiest, of pas wanneer jij er niet meer bent. Een achttiende verjaardag, een huwelijk, of gewoon iets wat je nog wilde zeggen. Je kunt ook berichten ontvangen die een ander voor jou heeft klaargezet. + +Je nalatenschap +Bepaal wie straks mag regelen wat er geregeld moet worden. Die persoon krijgt niet zomaar toegang: meerdere mensen moeten onafhankelijk van elkaar melden dat je bent overleden, waaronder iemand die jij zelf hebt aangewezen. Daarna heb jij nog een termijn om te laten weten dat je er gewoon nog bent. Pas als die voorbij is, gaat het open. + +HOE VEILIG IS HET? + +- Alles wordt versleuteld opgeslagen, ook bijlagen zoals een foto van je polis. +- Je hebt geen wachtwoord nodig: je logt in met je e-mailadres en een code die een kwartier geldig is en maar één keer werkt. Er is dus niets te onthouden, te raden of te hergebruiken. +- Wat je op "alleen voor mijzelf" zet, blijft dat. Je nalatenschapsbeheerder krijgt alleen wat jij hebt vrijgegeven, en pas op het moment dat jij hebt bepaald. +- Er wordt bijgehouden wie wat opent, wijzigt of vrijgeeft. + +Volledige zekerheid bestaat niet, en dat beweren we ook niet. Wat we wel doen is elke keuze zo maken dat een fout of een inbraak zo min mogelijk oplevert. + +JOUW GEGEVENS, JOUW KEUZE + +Een eigen MijnBesluit is gratis. Je kunt alles wat je hebt ingevoerd altijd zelf wijzigen of verwijderen, en je kunt je account en bijbehorende gegevens in de app of via mijnbesluit.nl laten verwijderen. + +MijnBesluit is een product van Kwik-Bit Automatisering B.V. +Privacyverklaring: https://mijnbesluit.nl/privacy + +WAT IS ER NIEUW (versie 1.1) - nu 117 +Eerste versie voor iOS: je kluis, je mensen, momenten en je nalatenschap, net als in de Android-app en op de website. + +ADRESSEN +Ondersteunings-URL: https://mijnbesluit.nl/ (moet een pagina zijn waar iemand hulp of contact vindt; nog te kiezen) +Marketing-URL: https://mijnbesluit.nl/ (mag leeg) +Privacybeleid-URL: https://mijnbesluit.nl/privacy +Copyright: 2026 Kwik-Bit Automatisering B.V. + +CATEGORIE +Primair: Productiviteit (zoals in Google Play). Secundair: Levensstijl. + +SCHERMAFBEELDINGEN (nog te maken, niet te hergebruiken van Android: 1180 x 2276 is geen toegestane maat) +- iPhone 6,9 inch: 1320 x 2868 (of 1290 x 2796); verplicht. De kleinere iPhone-maten schaalt App Store Connect hieruit af. +- iPad 13 inch: 2064 x 2752; verplicht zolang de app op iPad draait (Info.plist: UIDeviceFamily 1 en 2). +- 1 tot 10 per soort; zelfde vijf schermen als bij Google: overzicht, mensen, kluis, momenten, nalatenschap. + +TOEGANG VOOR DE REVIEWER (App Review Information) +Inloggen gaat met e-mailadres en een code die per e-mail komt. Reviewaccount review@mijnbesluit.nl; de code komt in de reviewmailbox: +webmail https://oma.kwik-bit.nl:8443/webmail/ (zie MijnBesluit-playstore.md). Zet die uitleg en het mailboxwachtwoord in de velden van App Review. +Wachtwoord van de reviewmailbox pas na de review wijzigen. + +LEEFTIJDSCLASSIFICATIE (door Jonathan te beantwoorden) +Doelgroep 18+ en "Contains ads" zoals bij Google; de vragenlijst van Apple over o.a. user-generated content, advertenties en +communicatie tussen gebruikers loopt anders dan bij Google, dus de antwoorden zelf doornemen. + +APP PRIVACY (door Jonathan te beantwoorden; voorstel, controleren) +Verzameld en gekoppeld aan de gebruiker, niet voor tracking: e-mailadres, naam (profiel), foto's of video's (alleen wat de gebruiker zelf kiest), +gebruikersinhoud (kluisitems, berichten), gebruiks- en logboekgegevens voor beveiliging. Tracking: nee (geen advertentie-SDK; de advertentie komt van de +eigen server). Verwijderen van account en gegevens kan in de app en via mijnbesluit.nl. diff --git a/tools/appstore-schermen.py b/tools/appstore-schermen.py new file mode 100644 index 0000000..c8eca2e --- /dev/null +++ b/tools/appstore-schermen.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +"""iPhone-schermafbeeldingen klaarmaken voor de App Store. + +Per bestand in de invoermap: + - de statusbalk bovenin (tijd, 5G, batterij, opname- en microfoonindicator) wordt overgeschilderd met + de kleur van de kop van de app, zodat er geen tijd, netwerk of toestelinfo in staat; + - het plaatje wordt op 1290 x 2796 gebracht (iPhone 6,9 inch, toegestaan door de App Store). +Alleen de statusbalk wordt aangepast; de rest van het scherm blijft zoals het is. + +Gebruik: python tools/appstore-schermen.py +Invoer: ORIGINELE iPhone-schermafbeeldingen (1179 x 2556 of 1290 x 2796, dezelfde beeldverhouding). +Een verkleind plaatje (bijvoorbeeld uit een chat) wordt onscherp zodra het naar 1290 x 2796 groeit. +Nodig: Pillow (pip install pillow). +""" +import sys, pathlib +from PIL import Image + +DOEL = (1290, 2796) +STATUSBALK = 0.055 # aandeel van de hoogte dat de statusbalk beslaat (iPhone met Dynamic Island) + +def verwerk(pad, uit): + im = Image.open(pad).convert("RGB") + b, h = im.size + if abs(b / h - DOEL[0] / DOEL[1]) > 0.01: + raise SystemExit(f"{pad.name}: beeldverhouding {b}x{h} past niet bij een iPhone-schermafbeelding") + rand = int(h * STATUSBALK) + kleur = im.getpixel((b // 2, rand + 4)) + im.paste(kleur, (0, 0, b, rand)) + im = im.resize(DOEL, Image.LANCZOS) + im.save(uit / (pad.stem + ".png"), optimize=True) + +if __name__ == "__main__": + inv, uit = pathlib.Path(sys.argv[1]), pathlib.Path(sys.argv[2]) + uit.mkdir(parents=True, exist_ok=True) + for f in sorted(inv.iterdir()): + if f.suffix.lower() in (".png", ".jpg", ".jpeg"): + verwerk(f, uit) + print("klaar:", f.name) diff --git a/tools/ios-bouwen.sh b/tools/ios-bouwen.sh index 9e8cdc4..3869e07 100644 --- a/tools/ios-bouwen.sh +++ b/tools/ios-bouwen.sh @@ -3,6 +3,8 @@ # # tools/ios-bouwen.sh controle alleen kijken of de Mac er klaar voor is # tools/ios-bouwen.sh simulator bouwen en starten in de iPhone-simulator (geen account nodig) +# tools/ios-bouwen.sh ipad zoals 'simulator', maar in de iPad-simulator (voor App Store-schermen); +# andere simulator: IOS_SIMULATOR="iPad Pro 13-inch (M4)" tools/ios-bouwen.sh simulator # tools/ios-bouwen.sh toestel bouwen en op een aangesloten iPhone zetten (Apple-ID / team nodig) # tools/ios-bouwen.sh archief een .ipa voor App Store Connect / TestFlight maken # (betaald Apple Developer Program, distributiecertificaat en @@ -43,11 +45,21 @@ case "$MODUS" in controle) controle ;; - simulator) + simulator|ipad) controle + [[ "$MODUS" == "ipad" && -z "${IOS_SIMULATOR:-}" ]] && IOS_SIMULATOR="iPad Pro 13-inch (M4)" stap "Bouwen en starten in de simulator" # Eerst de lijst met simulators tonen, zodat je ziet welke je kunt kiezen. - xcrun simctl list devices available | grep -i iphone | head -5 || true + xcrun simctl list devices available | grep -iE 'iphone|ipad' | head -12 || true + APPARAAT=() + if [[ -n "${IOS_SIMULATOR:-}" ]]; then + UDID="$(xcrun simctl list devices available | grep -F " ${IOS_SIMULATOR} (" | head -1 | sed -E 's/.*\(([0-9A-F-]{36})\).*/\1/')" + [[ -n "$UDID" ]] || stop "simulator '${IOS_SIMULATOR}' niet gevonden; kies een naam uit de lijst hierboven (Xcode > Settings > Components voor extra simulators)." + echo "Simulator: ${IOS_SIMULATOR} ($UDID)" + xcrun simctl boot "$UDID" 2>/dev/null || true + open -a Simulator + APPARAAT=(-p:_DeviceName=":v2:udid=$UDID") + fi # Eerst bouwen, daarna starten: met alleen -t:Run bouwt hij de app niet en weet hij niet wat # hij moet starten. MetAndroid=false: op de Mac staat alleen de iOS-werkbelasting. # CodesignKey=-: een eenvoudige lokale handtekening. De simulator wil geen certificaat, maar de @@ -55,7 +67,9 @@ case "$MODUS" in dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false \ -p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=- dotnet build "$PROJECT" -f "$TFM" -p:MetIos=true -p:MetAndroid=false -t:Run \ - -p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=- + -p:RuntimeIdentifier=iossimulator-arm64 -p:CodesignKey=- ${APPARAAT[@]+"${APPARAAT[@]}"} + echo + echo "Schermafdruk (zonder statusbalk-ruis, op ware grootte): xcrun simctl io booted screenshot ~/Desktop/ipad-1.png" ;; toestel) controle @@ -98,6 +112,6 @@ case "$MODUS" in echo "sleep de .ipa erin. Daarna staat de build na enkele minuten in App Store Connect > TestFlight." ;; *) - stop "onbekende optie '$MODUS' (kies: controle, simulator, toestel of archief)" + stop "onbekende optie '$MODUS' (kies: controle, simulator, ipad, toestel of archief)" ;; esac