HAVS Protect on managed phones: IT approval pack

Facts for an IT or security department deciding whether to allow the HAVS Protect app on managed iOS and Android phones. They are taken from the app's source code (version 2.12.0) and the backend configuration, not from marketing copy.

Updated 22 October 2026

No certification

HAVS Protect and the Copyl platform have not been assessed or approved under the Swedish Protective Security Act (säkerhetsskyddslagen 2018:585) or any other security classification scheme, and we do not claim they are. This pack gives you the facts for your own assessment.

Indicator, not a measurement. A phone is not a calibrated sound level meter. Use it to see when to protect your hearing and when a real measurement is needed.

Sound is processed on the phone only. No audio is recorded, stored or sent. Only sound levels (dB(A), time, duration, tool and project) leave the phone, and only when you log a session yourself. Your employer sees them the same way as your vibration values.

Apps and identifiers

AppHAVS Protect, published by We Protect AB
iOS bundle idio.havs (extensions io.havs.HavsGlanceWidgetExtension and io.havs.HavsLiveActivityExtension)
App Storehttps://apps.apple.com/se/app/havs-protect/id6469731381
Lowest iOS versioniOS 16.1
Android application idio.havs
Google Playhttps://play.google.com/store/apps/details?id=io.havs
Lowest Android versionAndroid 8.0 (API 26), target API 36
Backendapi.copyl.com (Copyl platform, Microsoft Azure, West Europe)

Permissions per platform

Each permission is asked for only when the feature that needs it is used. A worker can refuse any of them; the feature that needs it then does not work, the rest of the app does.

Android

PermissionAsked whenWhy
BLUETOOTH_SCAN (neverForLocation), BLUETOOTH_CONNECTPairing a HAVS Protect sensorConnects to the Bluetooth vibration sensor. The scan is declared as never used to find the phone's location.
BLUETOOTH, BLUETOOTH_ADMIN, ACCESS_FINE_LOCATION (Android 11 and older only), ACCESS_COARSE_LOCATION (Android 9 and older only)Pairing a sensor on older AndroidOlder Android versions require these for any Bluetooth scan. They are not declared for Android 12 and later.
RECORD_AUDIOOpening the Noise screenThe noise indicator. Never asked when the indicator is switched off by the employer or by MDM.
CAMERAAttaching a photo to a notePhoto on a note.
POST_NOTIFICATIONSFirst startExposure alarms and the notification shown while a work session runs.
FOREGROUND_SERVICE, FOREGROUND_SERVICE_CONNECTED_DEVICE, FOREGROUND_SERVICE_DATA_SYNCStarting a work sessionKeeps the sensor connection and upload running with the screen off. A persistent notification shows while it runs.
REQUEST_IGNORE_BATTERY_OPTIMIZATIONSStarting a work sessionStops battery optimisation from ending a running session.
SCHEDULE_EXACT_ALARMSetting exposure alarmsExposure alarms fire on time.

This is the app's own manifest. The store build also carries normal-level permissions merged in by libraries, such as INTERNET; the Google Play listing shows the full set. NFC is used to read tool tags where the phone has it (bluetooth_le is a required feature, NFC is not).

iOS

PermissionAsked whenWhy
Bluetooth (NSBluetoothAlwaysUsageDescription)Pairing a HAVS Protect sensorConnects to the Bluetooth vibration sensor and keeps the connection in the background.
Location, Always (NSLocationAlwaysUsageDescription)Not asked by the app (declared only)Declared in Info.plist for background Bluetooth; the app does not request location on iOS and sends no location to the backend.
Microphone (NSMicrophoneUsageDescription)Opening the Noise screenThe noise indicator. Never asked when the indicator is switched off by the employer or by MDM.
Camera (NSCameraUsageDescription)Attaching a photo to a notePhoto on a note.
NFC (NFCReaderUsageDescription)Scanning a tool tagReads the tool's identity from its tag.
NotificationsFirst startExposure alarms and push notifications.

Background modes declared: bluetooth-central, bluetooth-peripheral, remote-notification, processing, fetch.

Data flow and region

What happens to sound in the noise indicator:

Phone (HAVS Protect)everything inside this box stays on the phoneMicrophone audio16-bit PCM in memory, never written to a fileA-weighted leveldB(A) shown live, then the audio buffer is discarded✕ Audio never leaves the phoneWorker logs a sessionMicrosoft Azure · West Europeapi.copyl.comCopylAPI_Strategy, HTTPS, signed-in workerAzure SQLWest Europe, levels per sessionConnected Workeremployer view, same scope as vibration

What one logged noise session contains

Other services the app uses

Retention

Who at the employer sees what

Off switch and managed-config keys

The noise indicator can be switched off for a whole organisation or per phone. When it is off, the Noise screen and its home card are gone and the app never asks for the microphone.

  1. MDM managed app configuration on the phone, if set, wins.
  2. Otherwise the organisation setting: Copyl › Settings › Connected Worker › Noise indicator (enterprise administrators only). Default on.
  3. The app reads both at sign-in and at app start.
PlatformKeyTypeValues
Android (managed configurations, app_restrictions.xml)noiseIndicatorEnabledboolfalse = off, true = on (default)
iOS (com.apple.configuration.managed)noiseIndicatorEnabledBooleanfalse = off, true = on (default). The strings "false"/"true" and 0/1 are also accepted.

Example: iOS app configuration (Intune, Workspace ONE)

<dict>
  <key>noiseIndicatorEnabled</key>
  <false/>
</dict>

Contact

We Protect AB. Questions from IT and security departments: [email protected]. Ask us for anything this pack does not answer, for example a data processing agreement or the source of a statement here.