App Store Readiness¶
This checklist is intentionally separate from the sample source because final App Store submission requires a developer account, bundle IDs, certificates, provisioning profiles, App Store Connect records, screenshots, and final product metadata.
iOS¶
Use
examples/apps/ios/BrainFlowiOSDemoas the Xcode app project.Use the generated Swift binary package or embed framework slices from
build/apple_xcframeworks/XCFrameworks.Provide iOS-compatible BrainFlow native binaries through XCFrameworks. The high-level Swift package compiles for iOS, but BrainFlow calls can only run when matching native frameworks are embedded and signed.
For Muse native BLE boards, build BrainFlow native libraries with BLE support enabled for the target platform and keep the Bluetooth privacy string in the app plist.
Keep permissions minimal. The synthetic-board demo needs no network or file permissions.
Test via TestFlight before App Store submission.
macOS¶
Use
swift_packageproductBrainFlowMacDemofor local development, or package it withtools/apple/package_macos_demo_app.shfor app-bundle smoke testing.Add the files from
examples/apps/macos/BrainFlowMacDemo.Enable App Sandbox.
Embed and sign BrainFlow XCFramework products.
Verify dynamic loading works inside the app bundle, not only with
BRAINFLOW_LIB_DIR.
Production Gate¶
Swift package builds.
Swift tests pass with native libraries present.
CLI smoke test succeeds with the synthetic board.
tools/apple/build_xcframeworks.shandtools/apple/verify_xcframeworks.shpass.tools/apple/regenerate_artifacts.shrefreshesbuild/apple_xcframeworks, andtools/apple/verify_xcframeworks.sh build/apple_xcframeworkspasses.The Apple release artifact set includes the individual SwiftPM XCFramework zips,
swiftpm-checksums.txt,swiftpm-checksums.json,BrainFlowSwiftPackageRemote,BrainFlowAppleXCFrameworks.zip,BrainFlowAppleXCFrameworks.zip.sha256,checksums.sha256, andmanifest.jsonfrom the same build.manifest.jsonrecords the BrainFlow version, source revision, toolchain versions, deployment targets, optional native feature flags, SwiftPM release URL base, and binary target checksums.A clean app consumes
BrainFlowSwiftBinaryPackagewithout building native BrainFlow locally.iOS and macOS app targets launch, handle missing native frameworks gracefully, and run the synthetic-board workflow when frameworks are embedded.
Accessibility labels and dynamic text behavior are reviewed in the sample apps.
Crash logs are clean after repeated start, stop, read, and release cycles.