Eerste commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# De iOS-app
|
||||
|
||||
De app voor iPhone en iPad is dezelfde app als die voor Android. `MijnBesluit.AppUi` (alle
|
||||
schermen), `MijnBesluit.Client` en het socketprotocol zijn gedeeld; op iOS draait diezelfde HTML
|
||||
in een WKWebView in plaats van een Android WebView. Wat verschilt is alleen wat het toestel zelf
|
||||
doet.
|
||||
|
||||
Dit document gaat over dat verschil, en over wat Apple wil.
|
||||
|
||||
## Wat er klaarstaat
|
||||
|
||||
- `net10.0-ios` staat in `MijnBesluit.App.csproj`, maar **standaard uit**. Aanzetten met
|
||||
`-p:MetIos=true`, of door `MetIos` blijvend te zetten op de machine die aan een Mac hangt.
|
||||
Dat moet wel zo: staat de iOS-doelomgeving er onvoorwaardelijk in, dan wil ook een build van
|
||||
alleen de Android-APK de iOS-werkbelasting en een Mac hebben, en struikelt het maken van de
|
||||
APK over iets wat er niets mee te maken heeft.
|
||||
- `Platforms/iOS/` heeft `AppDelegate.cs`, `Program.cs` en `Info.plist`.
|
||||
- `Toestelslot` heeft een iOS-tak: Face ID of Touch ID via LocalAuthentication, met de code van
|
||||
de telefoon als terugval.
|
||||
- De gebruikstoelichtingen staan in `Info.plist`.
|
||||
|
||||
## Wat er nog moet
|
||||
|
||||
**Een Mac.** Apple's bouwgereedschap draait alleen op macOS. Visual Studio op Windows verbindt
|
||||
er over het netwerk mee ("Pair to Mac", over SSH) en laat de Mac compileren en ondertekenen. Op
|
||||
die Mac moet Xcode staan, één keer met de hand geopend zijn, en Remote Login aan. Staat er geen
|
||||
Mac, haal `net10.0-ios` dan tijdelijk uit `TargetFrameworks`; Android blijft dan gewoon bouwen.
|
||||
|
||||
**Het Apple Developer Program**, $99 per jaar. Als organisatie heb je nodig: een echte
|
||||
rechtspersoon, een D-U-N-S-nummer daarvoor, een e-mailadres op je eigen domein en een werkende
|
||||
website op dat domein. Dat D-U-N-S-nummer heb je voor Google Play ook nodig - vraag het één keer
|
||||
aan.
|
||||
|
||||
**Meldingen via APNs.** `Toestelmeldingen` geeft op iOS nu null terug: geen kenmerk, dus geen
|
||||
meldingen, en verder werkt alles. Dat komt erbij zodra het account er is, want het hangt eraan
|
||||
vast: een APNs-sleutel, de Push Notifications-capability, een provisioning profile en een
|
||||
`Entitlements.plist`.
|
||||
|
||||
## Twee vallen waar je vroeg in loopt
|
||||
|
||||
**Ontbrekende gebruikstoelichting = de app sluit.** Vraag je om Face ID zonder
|
||||
`NSFaceIDUsageDescription` in `Info.plist`, dan sluit iOS de app ter plekke af. Geen foutmelding,
|
||||
geen crashmelding die ergens op wijst - hij is gewoon weg. Hetzelfde geldt voor camera, microfoon
|
||||
en fotobibliotheek. Ze staan er nu allemaal in; komt er ooit iets bij wat het toestel moet
|
||||
vrijgeven, dan hoort de tekst er in dezelfde wijziging bij te staan. Een zelfcontrole bewaakt dat.
|
||||
|
||||
**De socket op poort 5200.** Dat is een eigen TLS-verbinding en geen URL-verkeer, dus App
|
||||
Transport Security gaat er niet over en je hebt er géén ATS-uitzondering voor nodig. Een
|
||||
uitzondering toevoegen die je niet nodig hebt levert alleen vragen op bij de beoordeling. Maar
|
||||
probeer die verbinding wel vroeg op een echt toestel, en ook over 4G en niet alleen over wifi.
|
||||
|
||||
## Wat Apple bij het inzenden vraagt
|
||||
|
||||
- **Account verwijderen in de app.** Verplicht. Staat er al.
|
||||
- **App Privacy** - hetzelfde soort formulier als Databeveiliging bij Google. De
|
||||
privacyverklaring staat in `Privacytekst.razor`.
|
||||
- **Exportverklaring** (`ITSAppUsesNonExemptEncryption`). Deze app versleutelt een kluis, dus dat
|
||||
antwoord is niet vanzelfsprekend "nee" zoals bij een app die alleen HTTPS gebruikt. De sleutel
|
||||
staat bewust NIET in `Info.plist`: dan vraagt App Store Connect het bij elke inzending en
|
||||
beantwoord je het bewust. Zie de toelichting in dat bestand.
|
||||
- **Sign in with Apple** is NIET verplicht. Dat geldt alleen als je inloggen via Google of
|
||||
Facebook aanbiedt; MijnBesluit doet e-mail met een code.
|
||||
|
||||
## De volgorde
|
||||
|
||||
1. D-U-N-S aanvragen voor de B.V. (kan weken duren, en Google Play wacht er ook op)
|
||||
2. Apple Developer Program, als organisatie
|
||||
3. Mac regelen, Xcode erop, Pair to Mac aan de praat
|
||||
4. Bouwen en op een echt toestel zetten
|
||||
5. Uitproberen: inloggen met een code, de socket, de kluis, het slot met Face ID
|
||||
6. Meldingen via APNs
|
||||
7. Inzenden
|
||||
Reference in New Issue
Block a user