NFC: Entitlement TAG statt NDEF, Tag-Session statt NDEF-Session

Der Upload nach App Store Connect scheiterte an der Entitlement-Pruefung:
"NDEF is disallowed" und "TAG is missing in the entitlement". Apple hat den Wert
NDEF zugunsten von TAG abgeloest; mit dem SDK von iOS 26/27 wird er abgelehnt.

TAG ist der Wert fuer NFCTagReaderSession, deshalb laeuft der Lese- und
Schreibweg jetzt darueber statt ueber NFCNDEFReaderSession. Die NDEF-Befehle
bleiben dabei vollstaendig erhalten: alle vier Tag-Protokolle (MiFare, ISO7816,
ISO15693, FeliCa) erben laut SDK-Header von NFCNDEFTag, also gibt es weiterhin
queryNDEFStatus, readNDEF, writeNDEF und writeLock. Gepollt wird iso14443 (die
ueblichen NTAG-Aufkleber) und iso15693 (Waeschetags mancher Hersteller).

Die eigene Klasse hiess NFCTag und kollidierte damit mit dem gleichnamigen
CoreNFC-Protokoll, das der neue Weg braucht - sie heisst jetzt NFCDienst.

Info.plist enthaelt ausserdem die Neuformatierung durch Xcode (Schluessel
sortiert, Kommentare entfernt). Inhaltlich unveraendert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-12 13:48:40 +02:00
co-authored by Claude Opus 5
parent 09a763a823
commit 140b81798c
6 changed files with 147 additions and 150 deletions
+5 -5
View File
@@ -71,9 +71,9 @@ struct NFCSchreibenView: View {
erfolg = false
defer { laeuft = false }
do {
try await NFCTag.schreiben(nutzlast, sperren: sperren)
try await NFCDienst.schreiben(nutzlast, sperren: sperren)
erfolg = true
} catch NFCTag.Fehler.abgebrochen {
} catch NFCDienst.Fehler.abgebrochen {
// Kein Fehler, sondern eine Entscheidung – nichts anzeigen.
} catch {
fehler = error.localizedDescription
@@ -93,7 +93,7 @@ struct NFCLesenButton: View {
@State private var laeuft = false
var body: some View {
if NFCTag.verfuegbar {
if NFCDienst.verfuegbar {
Button {
Task { await lesen() }
} label: {
@@ -107,7 +107,7 @@ struct NFCLesenButton: View {
laeuft = true
defer { laeuft = false }
do {
let roh = try await NFCTag.lesen()
let roh = try await NFCDienst.lesen()
// Ein selbst beschriebenes Tag darf auch die nackte UID tragen – anders
// als bei der Kamera droht hier keine Verwechslung mit einem Barcode.
guard let uid = einzelstueckCode(aus: roh, nackteUidErlauben: true) else {
@@ -115,7 +115,7 @@ struct NFCLesenButton: View {
return
}
onUid(uid)
} catch NFCTag.Fehler.abgebrochen {
} catch NFCDienst.Fehler.abgebrochen {
// Nutzer hat abgebrochen – keine Meldung.
} catch {
onFehler(error.localizedDescription)