Skip to main content
This guide helps you diagnose and resolve common issues with the Radar iOS SDK.

Quick Diagnostics

Before diving into specific issues, verify these basics:
Ensure you’re calling Radar.initialize() in your AppDelegate’s didFinishLaunchingWithOptions method before any other Radar methods.
AppDelegate.swift
Verify your publishable key is correct:
  • Starts with prj_test_pk_ (test) or prj_live_pk_ (live)
  • No extra spaces or characters
  • Copied from your Radar dashboard
Check that your app has location permissions:
Ensure these keys are in your Info.plist:
  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription (if using background tracking)
  • Optionally: UIBackgroundModes with location for background tracking

Common Issues

Location Tracking

Location Updates Not Received

1

Enable debug logging

Enable verbose logging to see what the SDK is doing:
2

Implement delegate

Make sure you’ve set a delegate to receive updates:
3

Check tracking status

Verify tracking is actually started:
4

Verify location permissions

Background tracking requires “Always” authorization:
Location updates may be delayed by iOS Low Power Mode, poor connectivity, low battery, or disabled Wi-Fi.

Location Updates Too Infrequent

Symptoms: Location updates happen less often than expected. Solutions:
iOS may throttle location updates if:
  • Device is in Low Power Mode
  • Battery is low (< 20%)
  • Poor network connectivity
  • App is in background for extended period
  • Location services are restricted systemwide
These are iOS limitations and cannot be overridden by the SDK.

Tracking Stops When App Backgrounded

Symptoms: Location updates stop when app goes to background. Solutions:
1

Add background location capability

In Xcode, go to your target’s Signing & Capabilities tab:
  1. Click + Capability
  2. Add Background Modes
  3. Enable Location updates
2

Request Always authorization

Background tracking requires “Always” permission:
3

Add Info.plist key

Add NSLocationAlwaysAndWhenInUseUsageDescription to your Info.plist with a clear explanation of why you need background location access.
4

Don't use continuous with blue bar disabled

If you disable the blue bar indicator:
iOS may still throttle updates. The blue bar is required for guaranteed continuous tracking.

Location Permissions

Permission Prompt Not Showing

Symptoms: Location permission dialog never appears. Solutions:
Ensure you have the correct keys in your Info.plist:
Info.plist
The description text cannot be empty or the prompt won’t show.
Permission requests must be made on the main thread:
If the user previously denied permission, the prompt won’t show again:

Can’t Upgrade from When In Use to Always

Symptoms: Already have “When In Use” permission but can’t get “Always” permission. Solutions:
1

Request in correct order

Request “When In Use” first, then “Always” after the app has been used:
2

Add both Info.plist keys

You must have both keys in Info.plist to upgrade permissions:
  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription
3

Timing matters

iOS may not show the Always prompt immediately. Request it:
  • After the user has used the app a few times
  • When they’re performing an action that benefits from background tracking
  • Not immediately on first launch

Trip Tracking

Trip Not Starting

Symptoms: startTrip() call returns an error or trip doesn’t track. Solutions:
The destination geofence must exist in your Radar dashboard:
  1. Go to Geofences
  2. Search for your destinationGeofenceTag or destinationGeofenceExternalId
  3. Ensure the geofence is enabled
Trip tracking requires location tracking to be active:

No Trip Events Generated

Symptoms: Trip starts but no approaching/arrival events received. Solutions:
1

Check approaching threshold

Adjust the approaching threshold if events aren’t triggered at the right distance:
2

Verify geofence radius

Ensure your destination geofence is large enough. Geofences smaller than 100 meters may have delayed entry detection.
3

Test with manual location

Simulate location updates to test events:

Events and Webhooks

Events Not Received in Delegate

Symptoms: Location updates work but event delegate methods aren’t called. Solutions:
Make sure your delegate isn’t being deallocated:

Webhooks Not Firing

Symptoms: Events generated but webhooks not received on your server. Solutions:
1

Check webhook configuration

In your Radar dashboard:
  1. Go to Settings → Webhooks
  2. Verify URL is correct and reachable
  3. Ensure event types are enabled
  4. Check webhook signature verification
2

Test endpoint manually

Use the Radar dashboard’s webhook tester to send a test event to your endpoint.
3

Check server logs

Look for incoming requests on your server. Radar webhooks:
  • Use POST method
  • Have Content-Type: application/json
  • Include X-Radar-Signature header
4

Verify event conditions

Some events have conditions:
  • Geofence events require matching tag or metadata
  • Trip events require active trip
  • Dwell events require minimum dwell time

Verified Location

trackVerified() Fails

Symptoms: trackVerified() returns error status. Solutions:
SSL pinning must be configured before calling trackVerified():
Location verification requires:
  • SSL pinning configured
  • Valid location with good accuracy
  • Network connectivity
  • Fraud detection enabled in dashboard
A failed verification doesn’t mean an error - it might indicate:
  • Location spoofing detected
  • Proxy/VPN usage
  • Location mismatch with expected jurisdiction

Performance Issues

High Battery Usage

Symptoms: App drains battery faster than expected. Solutions:

App Launch Time Increased

Symptoms: App takes longer to launch after adding Radar SDK. Solutions:
Disable features you don’t need:

Debugging Tools

Logging

Enable different log levels to see SDK activity:
Log Levels:
  • .none - No logs
  • .error - Only errors
  • .warning - Warnings and errors
  • .info - Info, warnings, and errors (default)
  • .debug - Verbose logging including all SDK operations
Implement log delegate:

Testing with Mock Locations

Test tracking without moving:

Manual Tracking

Test with a manual location:

Check SDK State

Get current SDK configuration:

Common Error Codes

Understand error status codes:

Still Having Issues?

If you’re still experiencing problems:

Contact Support

Email support@radar.com with:
  • SDK version
  • iOS version
  • Device model
  • Detailed description
  • Relevant logs

GitHub Issues

Search existing issues or create a new one with:
  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Code samples

Documentation

Review the complete documentation for detailed API references and guides

Dashboard

Check your Radar dashboard for:
  • Event logs
  • Webhook logs
  • API usage
  • Configuration