Ga naar inhoud

iOS-quickstart

Binnen een paar minuten leest je iOS-app een echte feature flag — met caching, offline-fallback en de apparaatidentiteit voor je geregeld.

Vereist iOS 17, macOS 14 of visionOS 1. De SDK heeft zelf geen dependencies.

De SDK is pre-release en zijn repository is nog niet publiek. Heeft je team toegang gekregen, installeer hem dan als Swift Package; de coördinaten hieronder zijn waar hij leeft.

Voeg het package toe in Xcode (File → Add Package Dependencies…) of in Package.swift:

.package(url: "https://github.com/FortressFlag/FortressFlag_SDK_ios.git", from: "0.1.0")

Eén keer, bij het opstarten — voor SwiftUI is de init van je App de natuurlijke plek:

import FortressFlag
FortressFlag.start(
Configuration(
sdkKey: "ffc_prod_…", // van het SDK-sleutelscherm van je project
environment: .production,
keychainAccessGroup: "com.acme.fortressflag" // dezelfde string in elke app die je uitbrengt
)
)

start keert terug zodra gecachte waarden zijn geladen, en de SDK polt vanaf dan op de achtergrond naar wijzigingen. De sleutel is een clientsleutel — hij gaat by design mee in je app.

Overal, ook binnen een SwiftUI-body:

if FortressFlag.isEnabled("new-checkout") {
NewCheckoutView()
} else {
LegacyCheckoutView()
}

String- en number-flags lees je op dezelfde manier — FortressFlag.stringValue("checkout-cta", default: "buy-now") — en met FortressFlag.onChange kun je op wijzigingen letten.

Dat is het — je flag is live. Zet hem om in het dashboard en de app volgt binnen zijn volgende poll.

Als FortressFlag plat ligt, ligt jouw app dat niet

Section titled “Als FortressFlag plat ligt, ligt jouw app dat niet”

Geen enkele aanroep in deze API throwt, blokkeert of kan je app laten crashen. Elke read resolvet via een cascade — de laatst ontvangen waarden, dan de duurzame cache van vorige runs, dan je standaard op de aanroepplek — zodat een storing, een dood netwerk of een ingetrokken sleutel je gebruikers nooit bereikt.

Stel keychain-deling in — het kost je geld om het niet te doen

Section titled “Stel keychain-deling in — het kost je geld om het niet te doen”

FortressFlag factureert per apparaat, niet per app. Eén telefoon met drie van je apps is één seat — maar alleen als alle drie het eens zijn over één apparaatidentiteit, en dat betekent op iOS een gedeelde keychain access group:

  1. In elk app-target: Signing & Capabilities → + Capability → Keychain Sharing.
  2. Voeg dezelfde groep toe aan elk van je apps — bijvoorbeeld com.acme.fortressflag.
  3. Geef die string (zonder het teamvoorvoegsel) mee als keychainAccessGroup.

Sla je dit over, dan werkt alles nog steeds, maar bewaart elke app zijn eigen identiteit: één apparaat telt als drie factureerbare apparaten. De SDK logt eenmalig een waarschuwing wanneer dat gebeurt.

Eén platformnotitie: de identiteit leeft in de keychain, dus op iOS overleeft hij het verwijderen van de app — en hij wordt nooit naar iCloud gesynchroniseerd, dus hij rijdt nooit via een back-up mee naar een tweede apparaat.

Het package levert een tweede library, FortressFlagDebugUI, met FlagListView — een SwiftUI-scherm dat elke flag toont die dit apparaat heeft, zijn waarde, en waar die vandaan kwam, live. Het is het snelste antwoord op “praat de SDK überhaupt met de server?”.