diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5ed3be8..14fe189 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,7 +72,7 @@ android:permission="android.permission.BIND_VPN_SERVICE"> + android:value="User-initiated and always-on VPN tunnel that continuously routes selected apps or all device traffic through user-configured proxy profiles" /> diff --git a/docs/google-play/assets/foreground-service-demo.mp4 b/docs/google-play/assets/foreground-service-demo.mp4 new file mode 100644 index 0000000..3d461de Binary files /dev/null and b/docs/google-play/assets/foreground-service-demo.mp4 differ diff --git a/docs/google-play/foreground-service-declaration.md b/docs/google-play/foreground-service-declaration.md new file mode 100644 index 0000000..fac2205 --- /dev/null +++ b/docs/google-play/foreground-service-declaration.md @@ -0,0 +1,56 @@ +# Foreground service declaration + +This document contains the text and supporting video for the Google Play +foreground service declaration of MegaProxy. + +## Foreground service type + +`specialUse` + +Manifest subtype: + +> User-initiated and always-on VPN tunnel that continuously routes selected +> apps or all device traffic through user-configured proxy profiles. + +## Play Console description + +MegaProxy provides a user-configured VPN tunnel, which is the app's core +functionality. The foreground service starts only after the user taps Connect, +when Android starts the configured Always-on VPN, or during a user-initiated +connection test. + +The service continuously processes network traffic through Android's +`VpnService` tunnel. This work must start immediately and remain active for the +entire VPN session: delaying, suspending, or terminating it would immediately +interrupt the network connection that the user explicitly enabled. + +While the tunnel is active, MegaProxy displays a persistent, low-priority +notification titled "MegaProxy is active". The Android VPN indicator and the +main screen also show that the VPN is connected. The user can stop a manually +started session by tapping Disconnect. An Always-on VPN session is controlled +through MegaProxy or Android's VPN settings. MegaProxy does not keep the +foreground service running after the VPN session has stopped. + +## Video + +[Foreground service demonstration](assets/foreground-service-demo.mp4) + +The video uses an Android emulator and a non-sensitive profile label. It does +not display proxy endpoints, credentials, or private configuration values. + +- `00:00` — MegaProxy is disconnected; the user starts the VPN with Connect. +- `00:20` — the main screen reports Connected and Android shows the VPN icon. +- `00:31` — the notification shade shows the ongoing notification + "MegaProxy is active — Connected". +- `00:38` — the app remains connected after the notification shade is closed. + +## Reviewer notes + +- The foreground service is visible and directly associated with the user's + active VPN session. +- It performs continuous, user-expected networking rather than deferrable + background work. +- The service uses `android.permission.BIND_VPN_SERVICE` and is not exported to + other apps. +- `POST_NOTIFICATIONS` is requested on supported Android versions so the + persistent status notification is visible to the user. diff --git a/fastlane/metadata/android/en-US/images/README.md b/fastlane/metadata/android/en-US/images/README.md new file mode 100644 index 0000000..62dda78 --- /dev/null +++ b/fastlane/metadata/android/en-US/images/README.md @@ -0,0 +1,7 @@ +Google Play listing images for MegaProxy. + +- `icon.png`: 512 x 512 store icon. +- `featureGraphic.png`: 1024 x 500 feature graphic. +- `phoneScreenshots/`: portrait screenshots captured from the app with demo-only data. + +Do not place real proxy hosts, credentials, keys, IP addresses, or other personal data in these assets. diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png index 3574621..be88ec0 100644 Binary files a/fastlane/metadata/android/en-US/images/featureGraphic.png and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png index 4978f48..e373bff 100644 Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01-main.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/01-main.png new file mode 100644 index 0000000..9ce025a Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/01-main.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02-settings.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/02-settings.png new file mode 100644 index 0000000..7baf7e7 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/02-settings.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03-fingerprints.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/03-fingerprints.png new file mode 100644 index 0000000..6df0c69 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/03-fingerprints.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04-split-tunneling.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/04-split-tunneling.png new file mode 100644 index 0000000..bedf23b Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/04-split-tunneling.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05-profiles.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/05-profiles.png new file mode 100644 index 0000000..cca4581 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/05-profiles.png differ diff --git a/fastlane/metadata/android/ru-RU/images/featureGraphic.png b/fastlane/metadata/android/ru-RU/images/featureGraphic.png index 3574621..be88ec0 100644 Binary files a/fastlane/metadata/android/ru-RU/images/featureGraphic.png and b/fastlane/metadata/android/ru-RU/images/featureGraphic.png differ diff --git a/fastlane/metadata/android/ru-RU/images/icon.png b/fastlane/metadata/android/ru-RU/images/icon.png index 4978f48..e373bff 100644 Binary files a/fastlane/metadata/android/ru-RU/images/icon.png and b/fastlane/metadata/android/ru-RU/images/icon.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01-main.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01-main.png new file mode 100644 index 0000000..4244c18 Binary files /dev/null and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01-main.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-settings.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-settings.png new file mode 100644 index 0000000..ace2337 Binary files /dev/null and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02-settings.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-fingerprints.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-fingerprints.png new file mode 100644 index 0000000..b6f575c Binary files /dev/null and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03-fingerprints.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-split-tunneling.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-split-tunneling.png new file mode 100644 index 0000000..7d24ddc Binary files /dev/null and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04-split-tunneling.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-profiles.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-profiles.png new file mode 100644 index 0000000..ac7ff9b Binary files /dev/null and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05-profiles.png differ