Teilen-Blatt, HIG-Blaetter, geteilte Ansichtseinstellungen (2026.8.31.1)
Share-Erweiterung: ein PDF aus Mail landet ueber Teilen -> DataMetric360 als Tankbeleg. Alles Native liegt versioniert unter companion-app/native/, weil ios/ gitignored ist und npx cap add ios es sonst wieder frisst; scripts/ios-teilen-einrichten.mjs haengt es bei jedem Bau ins Xcode-Projekt und ist in ios-signieren.sh eingehaengt. Der pbxproj-Teil ist auf keinem Mac erprobt - er bricht vor dem Schreiben ab, und docs/SHARE_EXTENSION.md beschreibt dieselben Handgriffe fuer Xcode. "In den Kalender uebernehmen" ging in der App nie: WKWebView ignoriert das download-Attribut, der Klick lief ins Leere. Auf dem Geraet jetzt @capacitor/filesystem plus @capacitor/share. useTheme/useBoden legten je Aufrufer eigenen Zustand an - fuenf Kopien. Der Schalter aenderte nur seine eigene, data-theme in App.tsx blieb stehen, die Tag/Nacht-Umschaltung wirkte erst nach einem Neustart. Jetzt ein Speicher je Einstellung ueber useSyncExternalStore. Zwei Regressionstests, gegen den alten Stand als fehlschlagend nachgewiesen. Alle Popups nach Apple HIG: neue Bausteine Sheet und ActionSheet, blickdicht und mit abgedunkeltem Schleier, in beiden Codebasen. Popup portalierte nach document.body - ausserhalb von [data-theme] - und war deshalb im Tagmodus fast unsichtbar; Portal zielt jetzt auf .ads-root. ImagePlaceholder merkte sich "fehlgeschlagen" ohne die Adresse: nach einem leeren Galerieplatz zeigten auch die mit Foto nur noch den Platzhalter. Vier Regressionstests, ebenfalls gegen den alten Stand geprueft. Bildadressen tragen jetzt einen Cache-Brecher - HA liefert /local/ mit 31 Tagen Cache-Vorgabe aus, im Panel eingefuegte Radfotos erschienen in der App deshalb nicht. uebersichtsbild: Panel speichert den Namen, die App verglich gegen den Dateinamen - der Vergleich traf nie zu. Kanonisch ist der Name. Weiter: Navigationspfeil statt gleichschenkligem Dreieck auf der Streckenlinie (die Kerbe unterscheidet Kopf und Ende), CI-Symbol tour-s als Fahrten-Icon, Datumsfelder zeigen ihren Wert ohne erstes Antippen, feste Beispielnamen im Setup, Kopf-Gegengewicht fuer mittige Titel, Standort-Blatt mit festem Fussabstand, NSLocationWhenInUseUsageDescription, watchPosition fuer die Live-Ortung, Art-Pille wieder als Knopf, Zwischenablage fuer Tankbelege. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -75,6 +75,49 @@ if [ ! -d ios ]; then
|
||||
fi
|
||||
npx cap sync ios
|
||||
|
||||
# Standort-Berechtigung ins Info.plist eintragen.
|
||||
#
|
||||
# Ohne diesen Schluessel zeigt iOS beim Aufruf von navigator.geolocation in
|
||||
# der WebView (src/screens/Standort.tsx) ueberhaupt keine Rueckfrage: der
|
||||
# Aufruf scheitert sofort, die App meldet "GPS-Freigabe fehlt", und unter
|
||||
# Einstellungen > DataMetric360 > Ort fehlt die Auswahl "Beim Verwenden der
|
||||
# App" - es bleiben nur "Nie" und "Beim Teilen". Nachgewiesen am 2026-08-31
|
||||
# an der ausgelieferten App.ipa: kein einziger Location-Schluessel darin.
|
||||
#
|
||||
# Warum hier und nicht in Xcode: ios/ ist gitignored und wird von
|
||||
# `npx cap add ios` aus Capacitors Vorlage neu erzeugt - die kennt keine
|
||||
# Standort-Schluessel. Ein Eintrag von Hand in Xcode waere beim naechsten
|
||||
# Erzeugen wieder verschwunden, genau wie es der Team-Kennung oben ergangen
|
||||
# waere. Deshalb steht er versioniert hier und wird nach jedem `cap sync`
|
||||
# neu gesetzt.
|
||||
#
|
||||
# Nur "WhenInUse": berechnet wird der Abstand zum geparkten Fahrzeug, waehrend
|
||||
# jemand die Standort-Seite ansieht. Hintergrundortung braucht die App nicht,
|
||||
# und was sie nicht braucht, soll sie auch nicht erfragen.
|
||||
# Share-Erweiterung ins Xcode-Projekt haengen.
|
||||
#
|
||||
# Aus demselben Grund wie die Team-Kennung und der Standort-Schluessel oben:
|
||||
# ios/ ist gitignored, also verschwindet jedes von Hand angelegte Ziel beim
|
||||
# naechsten `npx cap add ios`. Die Quellen liegen versioniert unter native/,
|
||||
# das Skript spielt sie bei jedem Bau wieder ein. Es ist idempotent - ein
|
||||
# zweiter Lauf ueber ein fertiges Projekt aendert nichts.
|
||||
#
|
||||
# Schlaegt es fehl, bricht der ganze Bau ab: eine App ohne den Eintrag im
|
||||
# Teilen-Blatt sieht fertig aus und ist es nicht, und der Unterschied faellt
|
||||
# erst auf dem Geraet auf.
|
||||
echo "==> Share-Erweiterung einrichten"
|
||||
node scripts/ios-teilen-einrichten.mjs
|
||||
|
||||
echo "==> Standort-Berechtigung eintragen"
|
||||
PLIST="ios/App/App/Info.plist"
|
||||
GRUND="Zeigt auf der Standort-Karte, wie weit du vom geparkten Fahrzeug entfernt bist."
|
||||
/usr/libexec/PlistBuddy -c "Set :NSLocationWhenInUseUsageDescription $GRUND" "$PLIST" 2>/dev/null \
|
||||
|| /usr/libexec/PlistBuddy -c "Add :NSLocationWhenInUseUsageDescription string $GRUND" "$PLIST"
|
||||
/usr/libexec/PlistBuddy -c "Print :NSLocationWhenInUseUsageDescription" "$PLIST" >/dev/null || {
|
||||
echo "FEHLER: NSLocationWhenInUseUsageDescription liess sich nicht setzen." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "==> Archiv bauen und signieren (Team $TEAM)"
|
||||
rm -rf "$AUSGABE"
|
||||
mkdir -p "$AUSGABE"
|
||||
|
||||
Reference in New Issue
Block a user