Skip to content

App: what the store reviews ask for (privacy link, iOS privacy manifest, approximate location) - #90

Open
mLampir wants to merge 5 commits into
mainfrom
claude/project-thread-ph1aun
Open

mLampir wants to merge 5 commits into
mainfrom
claude/project-thread-ph1aun

Conversation

@mLampir

@mLampir mLampir commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Requested by Michael · project thread

Before: the app had no link to its privacy policy, help or licenses and showed no version, the iOS project had no privacy manifest of its own, the location came from the WebView (iOS asked a second time with "localhost would like to use your location", Android asked for precise location and later asked again to make "approximate" precise), the app's language could only follow the phone's, there was no text for the reviewers, and code from other contributors could not legally ship in the App Store.

After: More ends with "Privacy policy · Help · Licenses · Version 1.2.0" (in the app from the stores, German pages for German); the app's language can be chosen in the phone's settings like any app's (Android 13+, iOS); the iOS app carries PrivacyInfo.xcprivacy; the location comes from @capacitor/geolocation with one system dialog for the approximate location only; store/listing.en.md has the notes for App Review / Play's App access; and CONTRIBUTING.md says contributions come under the GPL plus a permission to distribute the app through app stores.

Apple wants the privacy policy reachable inside the app (Guideline 5.1.1(i)) and checks privacy manifests on upload; the plugins are linked statically into the app, so the app's manifest declares the file-timestamp API that @capacitor/filesystem uses (C617.1) and the coarse location sent to Open-Meteo. The MIT and Apache parts and Open-Meteo's CC BY 4.0 ask for their notices, now in docs/licenses.md. App store terms add restrictions the GPL alone forbids, which is why the contribution terms carry the extra permission.

How:

  • Links and version in app/pet.html, texts in en.json/de.json; the version comes from the release tag through an esbuild define (tools/build.mjs, VERSION from codemagic.yaml), empty in other builds.
  • Language: android:localeConfig with res/xml/locales_config.xml, and locale removed from the activity's configChanges so a language change restarts it; CFBundleLocalizations in Info.plist. app/test/languages.test.ts checks both lists against app/locales/.
  • The manifest added to the App target's resources in project.pbxproj.
  • app/src/native.ts calls Geolocation.getCurrentPosition (its web version wraps navigator.geolocation, so the Pi's page keeps working); ACCESS_FINE_LOCATION is removed; cap sync updated the native plugin lists.
  • Docs: README (license, file table), docs/translating.md.

Not tested on a device: the location dialog, the language setting on Android and iOS, and an Xcode/Gradle build with the new plugin and manifest.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF

…ion only, notes for App Review

- More links the privacy policy and help pages (Apple 5.1.1 wants the policy reachable in the app)
- PrivacyInfo.xcprivacy: no tracking, coarse location for app functionality, file timestamps (C617.1)
- ACCESS_FINE_LOCATION only up to Android 11; from 12 on the dialog offers approximate only
- store/listing.en.md: the text for the reviewers' notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF
@mLampir mLampir self-assigned this Oct 20, 2026
@mLampir
mLampir marked this pull request as ready for review October 20, 2026 04:41
The WebView's navigator.geolocation made iOS ask a second time on its own and Android ask for
the precise location. The plugin asks once, through the system, for the approximate location;
ACCESS_FINE_LOCATION is gone from the manifest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF
…in the stores

App store terms add restrictions the GPL alone does not allow; without this permission, code
from others could not ship in the App Store.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF
Until one is chosen, the app keeps taking the phone's language. The Pi's own page keeps its
language from the settings page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF
The app's language is chosen in the phone's settings, like any app's, instead of with buttons
under More: Android 13+ through localeConfig (the activity now restarts on a language change,
so the page comes back in it), iOS through CFBundleLocalizations. A test keeps both lists in
step with app/locales/.

More also shows the version of a store build (from the release tag) and links the licenses of
the parts the app is built with (docs/licenses.md), including the Open-Meteo attribution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKfrmz9N5BvxMtYJYzBjEF

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants