Getting Started
What is Radar?
What is Radar?
- Background location tracking with configurable battery usage
- Geofencing with entry, exit, and dwell events
- Trip tracking with real-time ETAs
- Location verification and fraud detection
- Rich location context and search APIs
How much does Radar cost?
How much does Radar cost?
- Free tier: Includes monthly free requests for testing and small apps
- Pay-as-you-go: Only pay for what you use with no minimums
- Enterprise: Custom pricing for high-volume applications
What iOS versions are supported?
What iOS versions are supported?
- Minimum iOS version: iOS 12.0 and later
- Recommended: iOS 14.0+ for best features and performance
- Swift: Swift 5.0+
- Objective-C: Fully supported
- Architectures: arm64, x86_64 (simulator)
Can I use Radar with SwiftUI?
Can I use Radar with SwiftUI?
App struct:Do I need a credit card to get started?
Do I need a credit card to get started?
Installation & Configuration
What's the difference between CocoaPods and SPM?
What's the difference between CocoaPods and SPM?
- In Xcode: File → Add Packages
- Repository:
https://github.com/radarlabs/radar-sdk-ios-spm
How do I add Radar to an existing project?
How do I add Radar to an existing project?
Install SDK
Initialize in AppDelegate
Add Info.plist keys
Info.plist.Request permissions
What Info.plist keys are required?
What Info.plist keys are required?
Do I need to enable background modes?
Do I need to enable background modes?
- Add Background Modes capability
- Enable Location updates
Can I use Radar in a framework/SDK?
Can I use Radar in a framework/SDK?
- Initialize Radar in your framework’s initialization method
- Use a unique user ID to avoid conflicts
- Document any location permissions requirements
- Consider namespace conflicts if the host app also uses Radar
Location Tracking
What's the difference between tracking presets?
What's the difference between tracking presets?
How accurate is location tracking?
How accurate is location tracking?
- Device GPS capabilities
- Environmental factors (indoors, urban canyons)
- Desired accuracy setting
- Battery level and Low Power Mode
- High: Best accuracy (~5-10m), highest battery usage
- Medium: Balanced (~100m), recommended
- Low: Lower accuracy (~1000m), best battery life
Can tracking work offline?
Can tracking work offline?
- Location updates are collected offline
- Stored locally in a replay buffer
- Automatically synced when connectivity returns
- Failed requests are retried
Why does tracking stop when my app is killed?
Why does tracking stop when my app is killed?
- User force-quits the app (swipe up in app switcher)
- Device restarts
- System needs memory
- Crash or exception occurs
- Use
.efficientpreset with visit monitoring (survives force-quit) - Enable significant location change monitoring
- Prompt users not to force-quit the app
- Consider silent push notifications to relaunch app
How do I track only while app is in use?
How do I track only while app is in use?
trackOnce() instead of startTracking():What's the difference between the delegate methods?
What's the difference between the delegate methods?
Geofencing
How do I create geofences?
How do I create geofences?
- Go to Geofences
- Click “Create Geofence”
- Draw on map or enter coordinates
- Add tag and metadata
- Save
What's the minimum geofence size?
What's the minimum geofence size?
- Delayed entry detection (several seconds or more)
- False positives due to GPS drift
- Reduced battery life
How many geofences can I monitor?
How many geofences can I monitor?
- Monitor thousands of geofences simultaneously
- No client-side limit
- Automatically syncs nearby geofences to device
- More accurate than iOS region monitoring
How do I filter geofence events?
How do I filter geofence events?
What are dwell events?
What are dwell events?
- Detect actual store visits vs. passing by
- Trigger notifications after user settles
- Calculate time spent at locations
Trip Tracking
What is trip tracking?
What is trip tracking?
- Real-time location updates
- Approaching destination events
- Arrival confirmation
- ETA calculations
- Trip status tracking
- Delivery apps
- Ride-sharing
- Curbside pickup
- On-demand services
How do I start a trip?
How do I start a trip?
What trip events are generated?
What trip events are generated?
- user.started_trip: Trip begins
- user.updated_trip: Trip status changes
- user.approaching_trip_destination: Near destination (default 500m)
- user.arrived_at_trip_destination: Entered destination geofence
- user.stopped_trip: Trip completed or cancelled
Can I track multi-stop trips?
Can I track multi-stop trips?
How do I end a trip?
How do I end a trip?
completeTrip() for successful completion or cancelTrip() for cancellation:- Stop trip tracking
- Generate
user.stopped_tripevent - Return to previous tracking options
- Clear trip state
Does trip tracking affect battery life?
Does trip tracking affect battery life?
- More frequent location updates
- Continuous ETA calculations
- Real-time route monitoring
- Only track during active trips
- Call
completeTrip()orcancelTrip()promptly - Use appropriate travel mode (car vs. bike vs. foot)
- Consider custom tracking options with longer intervals
Privacy & Security
How does Radar handle user privacy?
How does Radar handle user privacy?
- User consent: Your app must request permissions
- Data minimization: Only collects necessary location data
- Anonymization: Supports anonymous tracking mode
- GDPR compliant: Data processing agreements available
- CCPA compliant: User data deletion on request
- User control: Users can revoke permissions anytime
What data does Radar collect?
What data does Radar collect?
- Location data: Coordinates, accuracy, speed, heading
- Device data: Device ID (IDFV), OS version, app version
- Optional: User ID, metadata, ad ID (if enabled)
- Personally identifiable information
- Device contacts or photos
- Other app data
Can I delete user data?
Can I delete user data?
- Go to Users
- Find the user
- Click “Delete User”
- Delete all location history
- Remove user metadata
- Clear event history
- Cannot be undone
What is location verification?
What is location verification?
- Device integrity checks: Validates genuine device
- Location signals: Analyzes GPS, network, and sensor data
- Jurisdiction checks: Verifies user is in expected location
- JWT token: Signed proof of location for your server
- Geofenced content
- Sports betting
- Regulatory compliance
- Fraud prevention
Should I use test or live keys in production?
Should I use test or live keys in production?
- Test keys (
prj_test_pk_...): For development and testing- Separate data from production
- No charges for API usage
- Events marked as
live: false
- Live keys (
prj_live_pk_...): For production apps- Real user data
- Billable API usage
- Events marked as
live: true
Performance & Optimization
How do I minimize battery usage?
How do I minimize battery usage?
Choose efficient preset
Reduce update frequency
Lower accuracy
Disable unused features
How do I reduce network usage?
How do I reduce network usage?
Will Radar slow down my app?
Will Radar slow down my app?
- Lightweight (~2MB SDK size)
- Minimal CPU usage
- Efficient memory footprint
- Background processing
- Network request batching
- Initialize in
didFinishLaunchingWithOptions - Start tracking asynchronously
- Don’t call
trackOnce()in tight loops - Use delegate methods instead of polling
How many API requests will my app make?
How many API requests will my app make?
- ~2 requests per minute when moving
- ~120 requests per hour
- ~2,880 requests per day per user
- ~0.4 requests per minute when moving
- ~24 requests per hour when moving
- ~150-300 requests per day per user (varies by user activity)
- Only on visit start/end
- ~2-10 requests per day per user
App Store & Deployment
Will Radar affect my App Store review?
Will Radar affect my App Store review?
- Clearly explain location usage in Info.plist
- Request permissions at appropriate times
- Handle permission denials gracefully
- Provide value to users for location access
- Comply with privacy requirements
- Request Always authorization on first launch
- Use vague permission descriptions
- Track location without user knowledge
- Access location for unrelated features
What should I include in privacy labels?
What should I include in privacy labels?
- Precise Location
- Purpose: App Functionality, Analytics, Product Personalization (as applicable)
- Linked to User: Yes (unless using anonymous mode)
- Purpose: App Functionality, Analytics
- Linked to User: Yes
- Advertising Data (IDFA)
- Purpose: Developer’s Advertising or Marketing
- Linked to User: Yes
How do I test before releasing to production?
How do I test before releasing to production?
Use test API keys
prj_test_pk_... keys before switching to live keys.Test with TestFlight
Use mock locations
Monitor dashboard
- Event logs
- Webhook deliveries
- API usage
- Error rates
Can I use Radar in an enterprise distribution?
Can I use Radar in an enterprise distribution?
- App Store apps
- TestFlight
- Enterprise (in-house) distribution
- Ad-hoc distribution
Getting Help
Where can I find code examples?
Where can I find code examples?
- Example app in the SDK repository
- Documentation with code samples
- API reference with method examples
- Blog tutorials for specific use cases
How do I report a bug?
How do I report a bug?
- Check existing issues first
- Include SDK version, iOS version, device model
- Provide steps to reproduce
- Share relevant logs
- For urgent production issues
- Include account details and app info
Does Radar offer professional services?
Does Radar offer professional services?
- Implementation consulting
- Custom integration development
- Architecture review
- Training sessions
- Dedicated support plans
Where can I learn more?
Where can I learn more?