Get access
1
Sign up for the developer dashboard
Go to tryrollup.com/developers and sign in with your email. Rollup sends you a sign-in link. Your first sign-in creates a developer account that waits for Rollup to approve it. While it waits, the dashboard shows “Your access is being reviewed”.
2
Wait for your account to be approved
Rollup emails you when your account is approved, or if it is not.
3
Create an app and accept the SDK Terms
Create an app with a name, your Apple Team ID (10 characters) and your app’s bundle ID. Tick the box to accept the Rollup SDK Terms. The app gets a publishable key that starts with
rk_live_.4
Wait for the app to be approved
A new app also waits for approval, and Rollup approves it only after you accept the terms. Until then, the server answers every request with the error
app_pending. Rollup emails you when your app is approved, or if it is not.5
Copy your key and setup
Open the app’s page in the dashboard. It shows your publishable key and the setup for this app: the package URL, the Info.plist entries with your bundle ID, and the Swift code to start the SDK. The rest of this guide explains each part.
Add the SDK
The SDK ships as a binary framework,Rollup.xcframework, that you add with Swift Package Manager or CocoaPods. It requires iOS 26.
- Swift Package Manager
- CocoaPods
In Xcode, choose File, then Add Package Dependencies, and enter the package URL. Add the Or add it to
Rollup library to your app target.Package.swift:Package.swift
IndexingState and RollupError.Code, can gain cases in later versions. When you switch over one, include a default or @unknown default case.
Configure your app target
The SDK checks these entries when you callconfigure, and throws an error that names any that are missing.
1
Photos usage description
Add
NSPhotoLibraryUsageDescription to your Info.plist with text that tells the person why your app reads their photos.2
Background task identifiers
Add both identifiers below to
BGTaskSchedulerPermittedIdentifiers. The first lets indexing continue in the background after the person starts it; the second keeps the index up to date later.3
Background processing mode
Add
processing to UIBackgroundModes. In Xcode, this is the Background processing option of the Background Modes capability.4
App Attest
Add the App Attest capability to your target.
configure cannot check for it; without it, the device cannot register, and the first call that needs Rollup’s server throws appAttestFailed, naming the missing capability.Info.plist
Configure the SDK
Register the background tasks and configure the SDK when your app starts.registerBackgroundTasks must run before your app finishes launching.
MyApp.swift
IndexOptions. See Index options.
Ask for Photos access
CallrequestPhotoAccess from a screen where the person has just chosen to turn the feature on. iOS shows its Photos prompt once.
Watch indexing
indexing.states reports the current state and every change after it.
state.isSearchable is true: the index answers from the photos it holds so far, newest first, while older ones fill in.
Search, ask and fill a profile
search runs on the iPhone. query and profile need a network connection, and each takes a few seconds to about 20 seconds.
Next steps
Index options
Choose the time window, media and places.
Profile schemas
What a schema can ask for and what comes back.
Keys and revocation
Rotate keys and understand what happens when access stops.
Troubleshooting
Common errors and what they mean.

