Air Quality Bar Privacy Policy
# Air Quality Bar — Privacy Policy
- Service: Air Quality Bar (미세먼지 알림바)
- Effective Date: May 20, 2026
- Last Updated: May 20, 2026
This policy describes how "Air Quality Bar" (the "App") handles user information.
The App does not require account registration and does not store any personally
identifiable information on its own servers.
---
## 1. Information collected and transmitted
### 1.1 Directly identifiable personal information
The App does **not** collect names, email addresses, phone numbers, or any other
directly identifying personal information. There is no signup or login feature.
### 1.2 Local-only on-device storage (never leaves the device)
The following items are entered by the user or generated automatically during
use, and are stored **only on the user's device** (via `hive_ce` and
`shared_preferences`).
- **Family profiles**: user-entered nicknames, age groups, and respiratory
sensitivity flags (e.g., asthma / allergy markers — entirely optional notes).
- **Favorite stations**: identifiers and names of air-quality monitoring
stations selected by the user.
- **Alert thresholds**: PM10, PM2.5, and composite-index thresholds, plus
notification on/off toggles.
- **App preferences**: theme (light/dark), language, units.
- **Air-quality cache**: PM10, PM2.5, O₃, NO₂, etc. fetched from external APIs
(this is environmental data, not personal information; cached for offline use).
These items never leave the device. Neither the App nor its developer can access
this data. Uninstalling the App removes all of the above.
### 1.3 Information transmitted to third parties
#### (a) Air-quality station search — App backend (dust-api.reactiveworks.dev)
When the user invokes the "find nearest station" feature, the following is
transmitted temporarily to the App's backend at
`https://dust-api.reactiveworks.dev`:
- Latitude and longitude (4–6 decimal places)
- Timestamp of the request
The backend uses the location **only to fulfill the request** and does not
persist it. It is not linked to any user identifier (account, device ID,
advertising ID, etc.), and the response contains only station metadata (name,
code, coordinates). Internally, the backend queries Korea's AirKorea public-data
API and the WAQI (World Air Quality Index) public API.
#### (b) Google AdMob (advertising)
The App is provided free of charge and is supported by advertising. To serve
ads, the Google AdMob SDK is integrated, which transmits the following to Google:
- Advertising ID (Android Advertising ID / iOS IDFA — resettable / clearable by
the user in OS settings)
- IP address
- Device info (manufacturer, model, OS version, language)
- Ad impression and click history
On iOS, the App Tracking Transparency (ATT) dialog allows the user to **decline
tracking**. If declined, the IDFA is not shared and only non-personalized ads
are shown.
Details are governed by Google's policies:
- Google Privacy Policy: https://policies.google.com/privacy
- AdMob data disclosures: https://support.google.com/admob/answer/6128543
#### (c) Google Play / Apple App Store — update check and review prompt (OS-level)
- `in_app_update`: invokes Google Play's In-App Update API to compare the
installed and latest versions. No additional personal data is collected by
the App itself.
- `in_app_review`: displays Google Play's in-app review dialog. Review data is
collected directly by Google Play and is not transmitted back to the App.
---
## 2. Permissions requested
### 2.1 Location (FINE / COARSE LOCATION) — optional
Used to automatically find the nearest monitoring station. The App functions
**fully without this permission**; the user may select a station manually.
Location is used only at the moment of the search request in Section 1.3(a)
and is not persisted on-device or on the backend.
### 2.2 Notifications (POST_NOTIFICATIONS, SCHEDULE_EXACT_ALARM, USE_EXACT_ALARM) — optional
Used to display air-quality change alerts and an ongoing color-indicator
notification. The App's core feature (querying air quality) works without this
permission.
### 2.3 Foreground service (FOREGROUND_SERVICE, FOREGROUND_SERVICE_DATA_SYNC)
Required to keep the ongoing notification showing the current air-quality
status. Does not access location data, contacts, or call data.
### 2.4 Boot completion (RECEIVE_BOOT_COMPLETED), wake lock (WAKE_LOCK)
Used to restore notifications and widgets after the device is restarted.
### 2.5 Network (INTERNET, ACCESS_NETWORK_STATE)
Used only for air-quality lookups and ad delivery.
### 2.6 Permissions NOT requested
The App does **not** request camera, microphone, contacts, call logs, file
storage (photos / documents), calendar, SMS, or Bluetooth permissions.
---
## 3. Retention period
| Item | Retention |
|---|---|
| On-device data (1.2) | Until the user uninstalls the App |
| Latitude / longitude in station search (1.3a) | Discarded immediately after request handling (not persisted) |
| Data transmitted to Google AdMob (1.3b) | Per Google's own policies |
---
## 4. Disclosure to third parties
Aside from the parties listed in Section 1.3 (App backend for station search,
Google AdMob, and OS-level Google Play / Apple App Store features), the App
**does not disclose information to any third party**.
---
## 5. User rights
- **Data reset**: family profiles, favorites, and caches can be deleted
individually from the in-app Settings screen.
- **Uninstall**: removing the App deletes all locally stored data (Section 1.2).
- **Advertising ID reset**: on Android, go to [Settings > Google > Ads]; on
iOS, go to [Settings > Privacy & Security > Tracking] to reset the
advertising ID or to decline tracking.
- **Permission revocation**: location and notification permissions can be
revoked at any time from OS settings.
---
## 6. Children's privacy
The App is not directed primarily at children under the age of 14 (Korean
threshold). For COPPA alignment, the App is also not directed at children
under the age of 13. AdMob ads are configured for a general audience. If
children under 14 use the App, parental supervision is recommended.
---
## 7. Privacy contact
For any privacy-related inquiry regarding the App, please contact:
- Responsible person: SiU Ahn (안시우)
- Email: siwooeo@gmail.com
We strive to respond within 7 business days.
---
## 8. Changes to this policy
This policy may be updated to reflect changes in laws or service features.
Material changes will be communicated through in-app notice or by updating
the "Last Updated" date above.
This policy is drafted with reference to the Republic of Korea's *Personal
Information Protection Act* (PIPA).
- Service: Air Quality Bar (미세먼지 알림바)
- Effective Date: May 20, 2026
- Last Updated: May 20, 2026
This policy describes how "Air Quality Bar" (the "App") handles user information.
The App does not require account registration and does not store any personally
identifiable information on its own servers.
---
## 1. Information collected and transmitted
### 1.1 Directly identifiable personal information
The App does **not** collect names, email addresses, phone numbers, or any other
directly identifying personal information. There is no signup or login feature.
### 1.2 Local-only on-device storage (never leaves the device)
The following items are entered by the user or generated automatically during
use, and are stored **only on the user's device** (via `hive_ce` and
`shared_preferences`).
- **Family profiles**: user-entered nicknames, age groups, and respiratory
sensitivity flags (e.g., asthma / allergy markers — entirely optional notes).
- **Favorite stations**: identifiers and names of air-quality monitoring
stations selected by the user.
- **Alert thresholds**: PM10, PM2.5, and composite-index thresholds, plus
notification on/off toggles.
- **App preferences**: theme (light/dark), language, units.
- **Air-quality cache**: PM10, PM2.5, O₃, NO₂, etc. fetched from external APIs
(this is environmental data, not personal information; cached for offline use).
These items never leave the device. Neither the App nor its developer can access
this data. Uninstalling the App removes all of the above.
### 1.3 Information transmitted to third parties
#### (a) Air-quality station search — App backend (dust-api.reactiveworks.dev)
When the user invokes the "find nearest station" feature, the following is
transmitted temporarily to the App's backend at
`https://dust-api.reactiveworks.dev`:
- Latitude and longitude (4–6 decimal places)
- Timestamp of the request
The backend uses the location **only to fulfill the request** and does not
persist it. It is not linked to any user identifier (account, device ID,
advertising ID, etc.), and the response contains only station metadata (name,
code, coordinates). Internally, the backend queries Korea's AirKorea public-data
API and the WAQI (World Air Quality Index) public API.
#### (b) Google AdMob (advertising)
The App is provided free of charge and is supported by advertising. To serve
ads, the Google AdMob SDK is integrated, which transmits the following to Google:
- Advertising ID (Android Advertising ID / iOS IDFA — resettable / clearable by
the user in OS settings)
- IP address
- Device info (manufacturer, model, OS version, language)
- Ad impression and click history
On iOS, the App Tracking Transparency (ATT) dialog allows the user to **decline
tracking**. If declined, the IDFA is not shared and only non-personalized ads
are shown.
Details are governed by Google's policies:
- Google Privacy Policy: https://policies.google.com/privacy
- AdMob data disclosures: https://support.google.com/admob/answer/6128543
#### (c) Google Play / Apple App Store — update check and review prompt (OS-level)
- `in_app_update`: invokes Google Play's In-App Update API to compare the
installed and latest versions. No additional personal data is collected by
the App itself.
- `in_app_review`: displays Google Play's in-app review dialog. Review data is
collected directly by Google Play and is not transmitted back to the App.
---
## 2. Permissions requested
### 2.1 Location (FINE / COARSE LOCATION) — optional
Used to automatically find the nearest monitoring station. The App functions
**fully without this permission**; the user may select a station manually.
Location is used only at the moment of the search request in Section 1.3(a)
and is not persisted on-device or on the backend.
### 2.2 Notifications (POST_NOTIFICATIONS, SCHEDULE_EXACT_ALARM, USE_EXACT_ALARM) — optional
Used to display air-quality change alerts and an ongoing color-indicator
notification. The App's core feature (querying air quality) works without this
permission.
### 2.3 Foreground service (FOREGROUND_SERVICE, FOREGROUND_SERVICE_DATA_SYNC)
Required to keep the ongoing notification showing the current air-quality
status. Does not access location data, contacts, or call data.
### 2.4 Boot completion (RECEIVE_BOOT_COMPLETED), wake lock (WAKE_LOCK)
Used to restore notifications and widgets after the device is restarted.
### 2.5 Network (INTERNET, ACCESS_NETWORK_STATE)
Used only for air-quality lookups and ad delivery.
### 2.6 Permissions NOT requested
The App does **not** request camera, microphone, contacts, call logs, file
storage (photos / documents), calendar, SMS, or Bluetooth permissions.
---
## 3. Retention period
| Item | Retention |
|---|---|
| On-device data (1.2) | Until the user uninstalls the App |
| Latitude / longitude in station search (1.3a) | Discarded immediately after request handling (not persisted) |
| Data transmitted to Google AdMob (1.3b) | Per Google's own policies |
---
## 4. Disclosure to third parties
Aside from the parties listed in Section 1.3 (App backend for station search,
Google AdMob, and OS-level Google Play / Apple App Store features), the App
**does not disclose information to any third party**.
---
## 5. User rights
- **Data reset**: family profiles, favorites, and caches can be deleted
individually from the in-app Settings screen.
- **Uninstall**: removing the App deletes all locally stored data (Section 1.2).
- **Advertising ID reset**: on Android, go to [Settings > Google > Ads]; on
iOS, go to [Settings > Privacy & Security > Tracking] to reset the
advertising ID or to decline tracking.
- **Permission revocation**: location and notification permissions can be
revoked at any time from OS settings.
---
## 6. Children's privacy
The App is not directed primarily at children under the age of 14 (Korean
threshold). For COPPA alignment, the App is also not directed at children
under the age of 13. AdMob ads are configured for a general audience. If
children under 14 use the App, parental supervision is recommended.
---
## 7. Privacy contact
For any privacy-related inquiry regarding the App, please contact:
- Responsible person: SiU Ahn (안시우)
- Email: siwooeo@gmail.com
We strive to respond within 7 business days.
---
## 8. Changes to this policy
This policy may be updated to reflect changes in laws or service features.
Material changes will be communicated through in-app notice or by updating
the "Last Updated" date above.
This policy is drafted with reference to the Republic of Korea's *Personal
Information Protection Act* (PIPA).