iOS
Swift Package MealioSDK. iOS 15+, async/await, no dependencies, optional SwiftUI sheet.
Install
In Xcode: File, Add Package Dependencies, then the Mealio SDK repository URL. Or in Package.swift:
Package.swift
.package(url: "https://github.com/mealio/mealio-sdk", from: "0.1.0")
// target dependency: .product(name: "MealioSDK", package: "mealio-sdk")Configure once
App.swift
import MealioSDK
@main struct MyApp: App {
init() {
MealioCart.configure(
publishableKey: "pk_live_...",
sessionTokenProvider: { try await MyAPI.mealioSessionToken() } // calls your server
)
}
var body: some Scene { WindowGroup { ContentView() } }
}Fill a cart
Swift
do {
let recipe = Recipe(id: "tinga", title: "Chicken Tinga",
ingredients: [RecipeIngredient(name: "1 yellow onion"), RecipeIngredient(name: "corn tortillas")])
let session = try await MealioCart.prepareCart(store: "heb", recipe: recipe, zip: "78704")
// session.ready: the user's earlier choices. session.needsChoice: let the user pick.
try session.choose(key: key, productId: productId, preferenceId: chosenPreference)
session.skip(key: "salt")
let result = try await session.addToCart() // result.added, .skipped, .failed
} catch let error as MealioError {
// error.code: login_cancelled, store_unavailable, location_required, ...
}The store's sign-in page appears in a sheet presented over your top view controller when needed.
Drop-in sheet
SwiftUI
if let s = session {
MealioCartSheet(session: s, accentColor: .red, onFinished: { result in session = nil })
}Sign out
Swift
await MealioCart.signOutOfStore("heb")
await MealioCart.signOutOfAllStores() // only store domains, your own web content is keptStores that offer "Sign in with Google" need email and password, because Google blocks its sign-in inside embedded WebViews.