01 Introduction
This Privacy Policy describes how THSOFT SOFTWARE JOINT STOCK COMPANY (“THSOFT,” “we,” “us,” or “our”) collects, uses, discloses, and protects information when you use the Weather365: Radar application on iOS (the “App” or the “Service”), including iPhone and iPad.
The App provides weather forecasts, air quality information, a weather radar map, and optional weather notifications for locations you choose.
The App has no user accounts. You do not register, sign in, or provide a name, email address, phone number, or payment information to use it. We cannot identify you personally from the data described in this Policy.
The App contains no advertising. We do not display ads, include no ad-serving or ad-mediation SDK, do not use the Apple Advertising Identifier (IDFA), do not present an App Tracking Transparency prompt, and do not track you across other companies' apps or websites.
By downloading, accessing, or using the App, you agree to the collection and use of information in accordance with this Policy. If you do not agree, please do not use the App.
02 Information We Collect
2.1 Information You Provide Directly
- Saved locations — place names, coordinates, country, and time zone for locations you add manually or add from your current position.
- Location search queries — the text you type when searching for a city or address.
- Preferences — temperature, wind, pressure, distance and precipitation units; time and date format; app language; light or dark appearance; icon and background theme; preferred radar layer and air-quality index scale; notification sound; home screen layout; and which weather cards you show or hide.
- Notification settings — which alert types are active (daily forecast, next-day forecast, severe weather warnings, and real-time conditions), the delivery times you pick, and which saved locations each alert applies to. A daily weather-news card is also shown inside the App; it is not a notification.
- Feedback — optional messages you choose to send us by email from within the App.
2.2 Information Collected Automatically
- Precise location — your device's GPS coordinates, only while the App is in use and only after you grant permission. See Section 4.
- Approximate location from IP address — when the App cannot obtain a GPS position (permission not granted, location services off, or the request timed out) it may determine an approximate location from your IP address. It also does this during first-run setup, to suggest a nearby location before you choose one.
- App usage data — session count and duration, app version, device model, operating system version, language, and region. These are the standard measurements collected automatically by Firebase Analytics; the App does not send any custom events of its own.
- Diagnostic data — crash reports, stack traces, non-fatal errors, and device state at the time of the error (via Firebase Crashlytics). In the published version of the App, personal details in these reports are redacted before they are sent — see Section 7.2.
- Network information — your IP address, which is visible to our servers and to third-party providers as an inherent part of any internet request.
- Recently detected position — your most recently determined coordinates (from GPS or from the IP-based lookup) and country code, cached on your device so the App can start quickly and work offline.
- Location search history — the search terms you typed and the matching results, cached on your device to speed up repeat searches.
- Service access key — a key used to call the IP-based location service, downloaded at runtime and stored on your device.
- Web view storage — cookies and local storage set by the radar page, its map provider, and the external weather website, kept by iOS in the App's own web storage.
What stays on your device. Your saved locations, location search history, cached weather and air quality data, unit and display preferences, notification settings, and diagnostic log files are stored locally in a container shared between the App and its widgets, inside the App's iOS sandbox. This local data is not uploaded to our servers. It remains on your device until you remove it in the App, or until you uninstall the App.
2.3 Device Permissions
The App requests only the following permissions:
| Permission | When requested | Purpose |
|---|---|---|
| Location While Using the App |
When you tap “Allow” during onboarding, or add your current location | Determine your coordinates so we can show the weather, air quality, and radar for where you are. The App asks for the “While Using the App” level; it never asks you to grant “Always” access. |
| Notifications | When you enable any weather alert | Deliver the weather notifications you turned on. All notifications are scheduled and delivered locally by your device. |
The App does not request access to your camera, microphone, photo library, contacts, calendar, health data, speech recognition, or Bluetooth. You may revoke either permission at any time in Settings → Weather365: Radar on your device; revoking a permission disables the associated feature but the rest of the App continues to work.
03 How We Use Your Information
We use the information described above only to:
- Retrieve and display weather forecasts, air quality data, and radar imagery for the locations you choose or for your current position.
- Convert a search query or a set of coordinates into a place name, and vice versa.
- Cache results on your device so the App loads quickly and works with a poor connection.
- Schedule and deliver the weather notifications you enable.
- Keep home screen and lock screen widgets up to date.
- Diagnose crashes and errors, and understand how the App is used so we can improve it.
- Deliver remote configuration that controls server addresses, feature switches, and alert thresholds.
- Comply with legal obligations.
We do not sell your personal information, and we do not use your location or usage data for advertising, profiling, or cross-app tracking.
04 Location Data and Weather Services
4.1 How your location is used
Weather is inherently location-based. To show conditions where you are, the App sends latitude and longitude to our weather backend, which forwards the request to the upstream weather data provider. The same applies to any location you save manually — its stored coordinates are sent when the App refreshes that location's forecast.
The App asks only for the “While Using the App” level of location access; it never presents the “Always Allow” request. It does not track your movement continuously and does not record a location history.
You may still see an “Always” option for this App under Settings → Weather365: Radar → Location. That is because the App declares a description for that level so iOS can offer it — the choice is entirely yours. The App never asks you to switch to it, and every feature described in this Policy works at the “While Using the App” level.
One exception is worth stating plainly: if you enabled real-time condition alerts for the “current location” entry, then when iOS wakes the App in the background to check those alerts, the App may make one or two short attempts to obtain your present coordinates so the alert reflects where you actually are. If iOS does not provide a position, the App simply uses the coordinates it already had. Turning off real-time alerts, or setting Location access to “Never,” stops this entirely.
4.2 Requests that leave your device
Besides the Google services described in Section 7, the App connects to the services below. Requests for weather, geocoding, and air quality data are routed through servers operated by THSOFT, which hold the provider credentials so they are not shipped inside the App. The IP-based location lookup is the one exception — your device contacts that service directly.
| Service | Purpose | Data sent from your device |
|---|---|---|
| Weather service THSOFT servers |
Current conditions, hourly and daily forecasts, and the data used to evaluate the weather alerts you enabled | Coordinates of the location being displayed or monitored; app identifier; language code |
| Location search and geocoding THSOFT servers → Google Geocoding |
Convert the text you search into coordinates, and convert coordinates into a readable place name | The address text you typed, or coordinates; app identifier; language code |
| Air quality service THSOFT servers |
Air quality index, pollutant breakdown, and history for a location | Coordinates |
| Radar map THSOFT servers, shown in an in-app web view; the map tiles come from a third-party map provider |
Display the animated weather radar layer | Coordinates, the map layer you selected, your unit preferences (so labels match your settings), and an app identifier; your IP address is visible to the servers involved as with any web request |
| IP-based location lookup third-party service, contacted directly by your device |
Estimate an approximate location whenever the App cannot obtain a GPS position — because permission was not granted, location services are off, or the request timed out | Your IP address, seen directly by that service as the origin of the request, together with an access key |
| External weather website opened in an in-app web view |
Opened only when you tap the corresponding menu item | Standard web request data (IP address, user agent). Like any web page, it may ask for your precise location through the normal iOS prompt; if you allow that, the site receives your coordinates directly — we are not involved in that exchange. |
| App Store Apple |
Opening our developer page, the App's store listing, or the review prompt when you tap the corresponding menu item | Handled by Apple's App Store. We receive no personal data from these actions. |
Server addresses, and the address of the external weather website, may be updated by us over time without a new app release; the purposes and the categories of data listed above remain as described in this Policy.
4.3 What we do not send
Your saved location names, notification schedules, theme choices, and layout settings are not sent to our weather servers. Weather, geocoding, and air quality requests carry only coordinates (or, for a search, the text you typed), plus a non-personal app identifier and a language code so results come back in your language.
The radar map is the exception: because it renders labels itself, its web address also carries the unit preferences you selected and the map layer you chose.
Please note: if the App encounters an error while loading a saved location, the crash-reporting diagnostic message references that location by an internal number, never by the name you gave it. See Section 7.2.
4.4 On-device diagnostic logs
For troubleshooting, the App and its widget extension each write technical log files into their own folder inside the App's container. They rotate daily and are capped at seven files of two megabytes for the App and seven more for the widget, so the oldest entries are discarded automatically. They are never transmitted automatically and are removed when you uninstall the App. The published version of the App has no control to export or clear them; they simply rotate and disappear on uninstall.
In the published version of the App these logs are redacted. Coordinates are rounded to roughly ten kilometres, saved location names and search terms are replaced by a length and a short code, and request addresses are stored without their query string. The full values are kept only in internal builds used by our own testers.
The same messages are also written to the standard iOS system log on your device. In the published version their contents are marked private, so they appear redacted in system diagnostics rather than in plain text.
05 Notifications and Background Refresh
If you enable weather alerts, the App uses Apple's User Notifications framework to schedule and deliver them. Notifications are composed and delivered entirely on your device.
We do not operate a push server. The App does not register for Apple Push Notification service, and we cannot send you messages remotely. Every notification you receive was scheduled by the App on your own device based on the settings you chose.
Several alert types are switched on by default once you finish setting up the App, so that it is useful straight away. You can turn any of them off at any time in the App's notification settings, or disable notifications entirely in iOS Settings.
To keep alerts current, iOS may wake the App periodically in the background using Background Tasks. During such a refresh the App fetches forecast data for the locations you selected for alerts, evaluates whether an alert condition is met, and schedules a local notification if so. Background refresh is controlled by iOS and can be disabled in Settings → General → Background App Refresh.
06 Home Screen and Lock Screen Widgets
The App includes home screen and lock screen widgets. Widgets run as a separate process and read the same locally stored data as the App — your saved locations, cached weather, and display preferences — through a shared app group container on your device.
When iOS refreshes a widget, the widget may request updated weather data for the displayed location using the same endpoints listed in Section 4.2. Widgets do not collect any additional information and do not have their own analytics.
Each widget has its own settings — which saved location it shows, and its background and icon style. iOS stores those choices with the widget itself. The widget also writes its own diagnostic log alongside the App's, as described in Section 4.4.
07 Analytics and Diagnostics
7.1 Analytics
We use Firebase Analytics (Google LLC) to understand how the App is used in aggregate — how often it is launched, how long sessions last, and which device models, OS versions, and regions our users have. The App sends no custom events of its own; only the measurements Firebase collects automatically are recorded. This helps us prioritize improvements and detect broken releases.
Analytics data is tied to a randomly generated app instance identifier, not to your name or account. The App does not access the Apple Advertising Identifier (IDFA): the optional Firebase component required to read the IDFA is not included in the App, so no advertising identifier is collected or shared, and no App Tracking Transparency prompt is shown.
7.2 Crash reporting
We use Firebase Crashlytics (Google LLC) to collect crash reports, stack traces, and non-fatal errors, together with the device state at the time of the problem (device model, OS version, available memory and storage, app version).
Crashlytics reports may also include a short diagnostic message written by the App — for example which saved location was being loaded, or a short excerpt of a server response the App could not decode. In the published version of the App these messages are redacted the same way as the log files: locations are identified by an internal number rather than the name you gave them, and coordinates and response contents are shortened or replaced by a code.
We use these details only to reproduce and fix the error.
7.3 Remote configuration
We use Firebase Remote Config (Google LLC) to adjust app settings — such as server addresses, feature switches, and alert thresholds — without shipping a new version. Remote Config downloads configuration values to your device; it does not upload your content, your locations, or your preferences.
08 Third-Party Service Providers
The App relies on the following third parties. Each processes information under its own privacy policy and under contractual safeguards consistent with this Policy.
| Provider | Purpose | Location | Policy |
|---|---|---|---|
| Firebase Analytics Google LLC |
Aggregate usage analytics | United States | firebase.google.com/support/privacy |
| Firebase Crashlytics Google LLC |
Crash reports and error diagnostics | United States | firebase.google.com/support/privacy |
| Firebase Remote Config Google LLC |
Remote app configuration | United States | firebase.google.com/support/privacy |
| Google Geocoding API via our proxy |
Convert search text to coordinates and coordinates to place names | United States, worldwide | policies.google.com/privacy |
| Weather data provider via our proxy |
Forecast, current conditions, and severe weather data | United States | Accessed only through our servers; your device never contacts the provider directly. |
| IPFind | Approximate location from IP address when a GPS position is unavailable | United States | Contacted directly by your device, so it sees your IP address. See the provider's terms at ipfind.co |
| Air quality data providers IQAir, OpenWeatherMap — via our proxy |
Air quality index and pollutant concentrations | United States, worldwide | Accessed only through our servers; your device never contacts them directly. |
| Map data provider Windy, embedded in the radar page |
Base map and radar tiles rendered inside the in-app radar view | Worldwide | Loaded by the radar page; the provider sees the request as a standard web request |
| External weather website | Opened in an in-app browser only when you tap that menu item | Varies | An ordinary website visit; we receive no data from it |
| Apple Inc. | Local notification delivery, widget timelines, background task scheduling, and App Store review prompts | On device / Apple services | apple.com/legal/privacy |
8.1 Feedback delivery
When you tap “Report a problem,” the App opens your device's default email client with a message addressed to app.pm@tohsoft.com. Your message does not pass through our servers — it travels through your own email provider directly to us, and you can review or cancel it before sending. If no email account is set up on your device, the App simply copies our address to your clipboard so you can write to us another way.
09 Data Retention
| Data type | Where | Retention period |
|---|---|---|
| Saved locations, preferences, notification settings | Your device | Until you delete them in the App or uninstall the App. Not held by us. |
| Location search history | Your device | Kept indefinitely to speed up repeat searches. There is no in-app control to clear it; it is removed when you uninstall the App. |
| Cached weather and air quality data | Your device | Refreshed automatically; replaced on each update and removed when you uninstall the App. |
| Web view storage (radar page, map provider, external website) | Your device | Kept by iOS until you uninstall the App. |
| On-device diagnostic logs | Your device | Rotated daily with a limited number of files retained; removed when you uninstall the App. Never uploaded automatically. |
| Weather and geocoding requests (coordinates, search text) | Our servers | Processed to return a response; retained only in short-lived operational and security logs. |
| Firebase Analytics events | Retained for the period configured in our Firebase project, in line with Google's available retention settings for Analytics data | |
| Firebase Crashlytics reports | Up to 90 days | |
| Feedback email you send us | Our mailbox | Until the issue is resolved, plus up to 24 months for support records |
You may request earlier deletion of anything we hold; see Section 12.
10 Data Sharing and Disclosure
We share information only with:
- Service providers listed in Section 8, strictly to operate the features described in this Policy.
- Legal authorities, where required by law, valid legal process, or to protect the rights, property, or safety of our users, the public, or ourselves.
- Successors in the event of a merger, acquisition, or asset sale, subject to equivalent privacy commitments.
We do not sell or share your personal information for cross-context behavioral advertising. The App contains no ad-serving or ad-mediation SDK and does not use an advertising identifier.
11 International Data Transfers
Our servers and our service providers process data in Vietnam, the United States, and other jurisdictions. Your information may therefore be transferred outside your country of residence, including outside the European Economic Area. For such transfers we rely on:
- Standard Contractual Clauses approved by the European Commission, where required.
- Additional safeguards published by providers such as Google in their own privacy policies.
12 Your Privacy Rights
You have the following rights, subject to applicable law.
12.1 Controls available in the App and in iOS
- Stop location collection — revoke location access in Settings → Weather365: Radar → Location, or set it to “Never.” The App will continue to work with locations you added manually.
- Stop notifications — turn off individual alerts in the App, or disable notifications entirely in iOS Settings.
- Delete your data — remove saved locations in the App. The App keeps at least one location so it always has something to display, and turning off the “current location” entry deactivates it rather than erasing its record. Removing a location deletes its saved forecast, though a small amount of cached air-quality and place-name data may remain. Your location search history has no in-app control and is kept until removal. To erase everything held on your device — locations, search history, cached weather, preferences, web view storage, and diagnostic logs — uninstall the App.
- Stop background activity — disable Background App Refresh in iOS Settings.
- Analytics and crash reporting — the App does not currently offer a switch to turn these off. If you object to this processing, write to us and we will tell you what we hold and delete it.
12.2 European Economic Area, United Kingdom, Switzerland (GDPR)
- Access — request a copy of the personal information we hold about you.
- Rectification — correct inaccurate or incomplete information.
- Erasure — request deletion of your personal information.
- Restriction — restrict how we process your data.
- Portability — receive your data in a structured, machine-readable format.
- Objection — object to processing based on legitimate interest.
- Withdraw consent — where processing is based on consent, such as location access.
- Complaint — lodge a complaint with your local data protection authority.
Legal basis for processing: Consent (location access, notifications), Contract (delivering the weather information you requested), Legitimate interest (analytics, crash reporting, service security and abuse prevention), Legal obligation (regulatory compliance).
Because the App has no accounts, we generally cannot link the limited data we hold to an individual. To act on an access or deletion request we may need additional information from you, such as an approximate time frame and device model; if we cannot identify the relevant records, we will tell you so.
12.3 California, USA (CCPA / CPRA)
- Right to know what personal information we collect, use, or disclose.
- Right to delete personal information we hold.
- Right to correct inaccurate personal information.
- Right to opt out of sale or sharing — we do not sell or share personal information, and the App has no advertising identifier to opt out of.
- Right to non-discrimination for exercising your rights.
12.4 Contacting us about your rights
Write to contact@thsoft.tohsoft.com. We respond within 30 days.
13 Data Security
- The App defines no exceptions to Apple's App Transport Security, and every endpoint it contacts is served over TLS/HTTPS.
- Credentials for the weather and geocoding providers are held on our servers and are not shipped inside the App. The App does contain the standard Firebase client configuration file that Google's SDK requires; this is not a secret and grants no access to your data.
- Data stored on your device is protected by iOS file-level encryption and the app sandbox.
- We minimize what we collect: no accounts, no contact details, no advertising identifier.
- Access to our backend systems is restricted, logged, and reviewed.
No method of transmission over the internet or electronic storage is completely secure. We cannot guarantee absolute security, but we take reasonable steps to protect your information.
14 Children's Privacy
The App is a general-audience weather utility. It is not directed to children under the age of 13, and we do not knowingly collect personal information from children under 13. If we learn that we have collected such information, we will delete it promptly. If you believe a child has provided us with information, please contact us at contact@thsoft.tohsoft.com.
15 Changes to This Policy
We may update this Privacy Policy to reflect changes in our practices, the App's features, applicable law, or for other operational reasons. When we make material changes, we will:
- Update the “Last Updated” date at the top of this page.
- Post the updated Policy at its permanent address, thsoft.tohsoft.com/apps/ios-weather365/privacy-policy — the same address the App opens from its Privacy Policy menu item.
- Where required by law, notify you through the App or by other reasonable means.
Continued use of the App after the effective date of the changes constitutes acceptance of the updated Policy.
16 Contact Us
If you have questions, concerns, or requests regarding this Privacy Policy or how we handle your information:
THSOFT SOFTWARE JOINT STOCK COMPANY
- Address
- Hanoi, Vietnam
- Privacy
- contact@thsoft.tohsoft.com
- Support
- app.pm@tohsoft.com
- Response
- Within 30 days of receipt
For data protection authority complaints (EU / EEA / UK residents), please contact your local supervisory authority.