Skip to content

Privacy Manifest

Understand what data RoadSaveKit collects, why it collects it, and what you must declare in your own app's privacy manifest.

Overview

Apple requires every third-party SDK distributed via Swift Package Manager or XCFramework to ship a PrivacyInfo.xcprivacy privacy manifest (mandatory since May 2024; App Store submissions that include SDKs without one are rejected). RoadSaveKit ships its manifest at Sources/RoadSaveKit/PrivacyInfo.xcprivacy inside the package.

This article explains what the manifest declares, why, and what you as a consumer must do in your own app.

What RoadSaveKit Collects

Data type Apple category Linked to user? Used for tracking? Purpose
GPS coordinates, speed, bearing, horizontal accuracy Precise Location Yes No Trip detection; speed verification at crash time; crash evaluation payload sent to api.roadsave.co.za
3-axis accelerometer readings Other Diagnostic Data Yes No In-vehicle crash detection algorithm; ZIP archive uploaded to api.roadsave.co.za for server-side evaluation
Activity type (stationary / walking / automotive), pedometer step counts Other Diagnostic Data Yes No Trip start and stop detection; automotive-mode protection in the step counter

All data is linked to the clientUserID value you supply in RoadSaveConfiguration. None of it is used to track users across apps or websites owned by other parties.

System APIs Accessed

API category Apple reason code Usage
User Defaults CA92.1 — access info from the same app RoadSaveKit reads back configuration it previously persisted to UserDefaults across four keys: crash parameters fallback, trip verification grace count, offline crash flag, and the offline trip counter

What You Must Do

1. Add your own PrivacyInfo.xcprivacy

Even though RoadSaveKit ships its own privacy manifest, App Store policy requires your app to declare the data types it collects. Because RoadSaveKit collects location and diagnostic data on your behalf, your app's manifest must also include those types.

Add or merge the following entries into your app target's PrivacyInfo.xcprivacy:

<key>NSPrivacyCollectedDataTypes</key>
<array>
    <dict>
        <key>NSPrivacyCollectedDataType</key>
        <string>NSPrivacyCollectedDataTypePreciseLocation</string>
        <key>NSPrivacyCollectedDataTypeLinked</key>
        <true/>
        <key>NSPrivacyCollectedDataTypeTracking</key>
        <false/>
        <key>NSPrivacyCollectedDataTypePurposes</key>
        <array>
            <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
            <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
        </array>
    </dict>
    <dict>
        <key>NSPrivacyCollectedDataType</key>
        <string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
        <key>NSPrivacyCollectedDataTypeLinked</key>
        <true/>
        <key>NSPrivacyCollectedDataTypeTracking</key>
        <false/>
        <key>NSPrivacyCollectedDataTypePurposes</key>
        <array>
            <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
        </array>
    </dict>
</array>

If your app already declares NSPrivacyCollectedDataTypePreciseLocation for its own use, add NSPrivacyCollectedDataTypePurposeAnalytics to its purposes array (if not already present) rather than creating a duplicate entry.

2. Add the required background mode and permission strings

RoadSaveKit requires the location background mode and the NSLocationAlwaysAndWhenInUseUsageDescription permission key. See Getting Started for the full setup checklist.

3. App Privacy nutrition label

When you submit your app on App Store Connect, the App Privacy section will ask you about data collection. Declare Precise Location and Other Diagnostic Data under the appropriate data types. Mark both as linked to the user and not used for tracking.

Data Destination

All data collected by RoadSaveKit is transmitted to:

https://api.roadsave.co.za/api/

This endpoint is operated by CrashDetech (Pty) Ltd, trading as RoadSave. For questions about data handling, retention, or deletion, contact info@roadsave.co.za.

Important: The backend is actively migrating to a modernised API. A future minor release (4.1.x) will update the default base URL to https://api.roadsave.co.za/v2/ once the backend team confirms all endpoints are available. The base URL is also configurable via RoadSaveConfiguration/baseURL if your integration requires a custom endpoint.

SDK Privacy Manifest Location

The manifest file ships with the SDK package at:

Sources/RoadSaveKit/PrivacyInfo.xcprivacy

Xcode automatically picks it up when you add RoadSaveKit via Swift Package Manager. When consuming the .xcframework release bundle, the manifest is embedded inside the framework bundle at RoadSaveKit.framework/PrivacyInfo.xcprivacy.

Further Reading