iOS · SwiftUI · SDK 1.0.1
iOS quickstart
Install Mobile Joe and display a FAQ published from your dashboard.
What you need
- An iOS app built with SwiftUI: iOS 17+, Swift 6.2+, and Xcode 26+.
- Your app in Mobile Joe with a published FAQ. See Set up your app.
- Its public SDK key. Set up SDK → iOS shows the configuration below with your key filled in.
Install the SDK
- In Xcode, choose File → Add Package Dependencies….
- Enter this package URL:
https://github.com/MobileJoeDev/mobilejoe-ios.git
Set the dependency rule to Exact Version, enter 1.0.1, and add both MobileJoe and MobileJoeUI to your app target.
Configure your app
In your existing SwiftUI App type, import MobileJoe and configure it in the initializer, before any Mobile Joe view appears. Keep your app's existing name and root view.
import SwiftUI
import MobileJoe
@main
struct MyApp: App {
init() {
try? Joe.configure(withAPIKey: "YOUR_API_KEY")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Replace YOUR_API_KEY with the public SDK key of your app in Mobile Joe. configure returns right away and registers the device in the background. Do not configure in .task: a view that appears first misses its content, such as an active alert at a cold start. The example ignores errors with try?; use do/catch to handle them.
Check your connection
Run your app and keep App Settings → Set up SDK → iOS open in the dashboard. The indicator confirms a registered iOS device of this app. An earlier registration can also confirm it, so verify current content next.
Show your FAQs
Replace your starter ContentView with this example, or add its navigation link to your existing NavigationStack.
import SwiftUI
import MobileJoeUI
struct ContentView: View {
var body: some View {
NavigationStack {
List {
NavigationLink("FAQs") {
FAQView(
presentationMode: .inNavigationStack,
configuration: .standard(recipient: "")
)
}
}
.navigationTitle("Help")
}
}
}
FAQView loads its own data. The empty support recipient hides the email link. Run your app, open FAQs, and confirm your published question and answer. Edit the answer in the dashboard and pull to refresh to see the update. See the FAQ guide for presentation and support options.
Before you ship
For signed-in users, pass a stable account ID as appUserID to Joe.configure or call try Joe.identify(appUserID:) after sign-in, and try Joe.logout() after sign-out; see Identity and data. Disable debug mode in release builds.
Troubleshooting
If the package cannot resolve, check the package URL and the exact version. For a missing connection or FAQ, filter the Xcode console for the subsystem MobileJoe and follow Troubleshooting.
Next steps
Add Feature Plans, FAQs, or Alerts.