Tag Archives: EvIDns ZeroConf

Android foreground service compliance — Google Play requirements, user control, and local-only NFC HSM PC connection

Android foreground service compliance illustrated with Android 16 feature update, showing visible foreground service, user control, STOP action, and local-only secure connection

Android foreground service: Google Play compliance, user control, and NFC HSM PC Connection via a Chromium-based extension. This dossier shows how a Foreground Service (FGS) requirement becomes a verifiable trust marker. The session is strictly local-only (no proxy, no VPN, no routing). It relies on local pairing via EviDNS Zeroconf. It also exposes a persistent notification with a STOP action. Finally, it enforces granular data controls and a 2-minute audit path.

Executive summary

Context

Android continues to restrict background execution. At the same time, it tightens the governance of foreground services. The goal is clear: reduce invisible work, limit abuse, and preserve battery and reliability.
With Android 16 (API level 36), enforcement becomes more direct. As a result, compliance becomes observable during real-world review and testing.
However, a well-designed foreground service is not a penalty. Instead, it becomes a trust marker. It is built on transparency, user control, and a minimal operational scope.

Purpose

This dossier provides a verifiable justification for using an Android foreground service. It is a required dependency for a core feature: PC Connection.
In other words, it documents why the service exists. It also shows how Google Play requirements can support transparency and security maturity.

Scope

Feature in scope: PC Connection (phone ↔ desktop). It enables the use of NFC HSM devices from a computer. It does so through a Freemindtronic Chromium-based browser extension. No workstation software is required.
Importantly, the session is strictly local-only. There is no proxy, no VPN, and no routing. The local port is configurable (default: 10001).

Design doctrine

The service is not used to “stay active”. Instead, it makes a sensitive session visible and stoppable. It also keeps the session user-controllable.
Specifically, it uses a persistent notification and an explicit STOP action. Moreover, auto-login remains reversible. Finally, the user can restrict which data categories the extension is allowed to request.

Strategic differentiator

Android and Google Play keep hardening enforcement. Consequently, opaque implementations become structurally fragile.
By contrast, a demonstrable design reduces ambiguity. It combines user control, local-only scope, and operational transparency. Therefore, it becomes a competitive advantage.
This dossier explains the dependency. It also explains how users keep control. Finally, it shows how compliance can be turned into a durable differentiator.

Key takeaway

The Android foreground service is used only for the PC Connection session. The session stays visible and stoppable (persistent notification + STOP). This enables the use of an NFC HSM from a desktop via a Chromium-based extension.
In addition, the user can disable auto-login. The user can also restrict each authorized data category. The user can verify the strictly local-only scope (no proxy/VPN/routing). Finally, the user can audit compliance in 2 minutes.
📱 Freemindtronic (EviPro) on Google Play: open listing

Technical note

Summary reading time: ~2 minutes
Full reading time: ~20–25 minutes
Verification time (quick audit): ~2 minutes
Publication date: 2026-01-16
Last updated: 2026-01-20
Level: Android / Security / Audit
Posture: Local-only, user-in-control, least privilege
Category: Tech Fixes & Security Solutions
Available languages: FR · EN · CAT · ES

Impact level: 8.4 / 10 — store compliance, software transparency & local session security

Editorial note —
This dossier is part of Tech Fixes & Security Solutions. It extends prior work on sovereign architectures and user control. It also addresses a recurring risk: treating “background persistence” as acceptable by default.
Here, the issue is broader than Android. It is the ability to prove (audit) behavior. It is also the ability to document (compliance) it. Finally, it is the ability to bound it (least privilege).
The dossier focuses on PC Connection (Chromium extension), local pairing via EviDNS Zeroconf, and per-data-category controls. Therefore, it shows how a Google Play requirement can become a concrete trust marker.
This work continues publications in: Tech Fixes & Security Solutions and, for sovereign and trusted architecture topics: Digital Security.
It follows the Freemindtronic Andorra AI transparency statement — FM-AI-2025-11-SMD5.
Schéma de la Connexion PC Freemindtronic illustrant le service premier plan Android, l’appairage local EviDNS Zeroconf, le serveur HTTP sécurisé, le contrôle granulaire des données et l’extension Chromium.

2025 Tech Fixes Security Solutions Technical News

SSH VPS Sécurisé avec PassCypher HSM

2025 Tech Fixes Security Solutions

Secure SSH key for VPS with PassCypher HSM PGP

2026 Tech Fixes Security Solutions

Service premier plan Android : Sécurité et contrôle utilisateur

2024 Tech Fixes Security Solutions

Unlock Write-Protected USB Easily (Free Methods Only)

2025 Digital Security Tech Fixes Security Solutions Technical News

SSH Key PassCypher HSM PGP — Sécuriser l’accès multi-OS à un VPS

2023 EviKey & EviDisk EviKey NFC HSM NFC HSM technology Tech Fixes Security Solutions Technical News

Secure SSH Key Storage with EviKey NFC HSM

2025 Tech Fixes Security Solutions

NFC HSM SSL Cert IP: Trigger HTTPS Certificate Issuance DNS-less

2025 Tech Fixes Security Solutions

Let’s Encrypt IP SSL: Secure HTTPS Without a Domain

2025 Tech Fixes Security Solutions

Emoji and Character Equivalence: Accessible & Universal Alternatives

2024 Tech Fixes Security Solutions

How to Defending Against Keyloggers: A Complete Guide

In mobile security and Android, this note belongs to the Tech Fixes & Security Solutions category. Moreover, it supports Freemindtronic’s sovereign operational toolkit (HSM, user control, local-only architectures, audit).

Quick navigation

🔝 Back to top

Android foreground service: why it has become a security marker

A foreground service is designed for operations that must remain active, visible to the user, and stoppable at any time.
In practice, it is often misused by applications that try to remain active silently, automate actions without explicit user intent, or extend background activity beyond what is strictly required.

For a security product, the correct posture is not to “work around the rule”, but to align with it.
The user must always know when a sensitive session is active, what it is doing, and how to stop it immediately.
This requirement becomes critical when the phone acts as a gateway between hardware modules (NFC HSM) and a desktop browser environment.

Android: background execution vs foreground service

Across recent Android versions, background execution has been progressively restricted.
The objective is clear: limit invisible activity, reduce abuse, and preserve battery life and system reliability.
In this context, any feature that must remain active without being in the foreground must be justified and made perceptible.

This is precisely the role of a foreground service.
It makes sensitive activity visible (notification), stoppable (STOP), and explicitly bounded in time.

This approach follows a foreground service Android security architecture, aligned with Android foreground service compliance and Google Play requirements.
Here, visibility, immediate shutdown, and a strictly local-only scope are central criteria.

Key point: the correct question is not “how to stay active in the background”, but “how to make a persistent dependency auditable and controllable”. When designed correctly, a foreground service becomes a transparency marker, not a workaround.

Official Android Developers source — required foreground service types (Android 14+, including connectedDevice for interactions with peripherals such as NFC and Bluetooth):
https://developer.android.com/about/versions/14/changes/fgs-types-required

Threat model: why the PC Connection must remain visible and bounded

Realistic assumption: a phone used as a gateway (mobile ↔ desktop) represents an attack surface.
In this context, the foreground service acts as a mechanism of control and proof (notification + STOP), not as a way to persist silently.

Risk Example Freemindtronic measure
Invisible persistence Service running without user awareness Foreground service with persistent notification and immediate STOP
Over-permission Open session equals excessive access Granular control by data category (least privilege)
Network expansion Disguised proxy/VPN, implicit routing Local-only: no proxy, no VPN, no routing
Operational failure OS stops the service, breaking the workflow Session explicitly dependent on the FGS, therefore predictable and verifiable

Protection against capture and interception attacks:
the Freemindtronic application enforces system-level screenshot locking across all sensitive screens.
This mechanism prevents screenshots, screen recording, and equivalent capture APIs, including attempts by resident malware.
All screenshots and visual evidence provided for review purposes were produced using a debug build in which this protection is intentionally disabled.

In addition, PC Connection relies on a contactless, no-keyboard-input model, both on the phone and on the computer.
As a result, keylogger-based attacks are structurally ineffective, which significantly reduces the attack surface on the workstation side.

Android foreground service: Google Play requirements (official sources)

Google Play strictly governs foreground services. They must be justified by a core, user-beneficial feature. In addition, they must remain perceptible at all times through an explicit notification. Finally, they must be stoppable on demand. Since Android 14, declaring an explicit foreground service type is mandatory.

Official Android & Google Play references:

In this dossier, these requirements are applied to a real, verifiable case (PC Connection + NFC HSM). As a result, the user-in-control model (notification, STOP, opt-out, granular controls) turns a compliance constraint into evidence of security maturity.

Field feedback: approval, then rejection, of the Foreground Service Connected Device declaration

Real publication context: the FOREGROUND_SERVICE_CONNECTED_DEVICE declaration was accepted during an initial submission. It included a demo video and a justification that covered Android 14 and Android 15 requirements. However, during a late-December update, the same declaration was rejected. The reviewer requested “additional details” without providing actionable guidance on what was missing.

This situation is not isolated. Moreover, multiple developers report similar cases. In those reports, a previously accepted foreground service declaration is later rejected during an update. The rejection message can be ambiguous. Specifically, it may suggest the issue is either the justification text or the video, without stating which part is insufficient.

An ambiguous rejection signal, documented by the community

  • Reddit – r/androiddev: developers describe repeated foreground-service-related rejections, with clarification requests that do not identify what to fix (text or video). Link: https://www.reddit.com/r/androiddev/comments/1fsuii4/has_anyone_had_repeat_issues_with_app_submission/
  • Zoom developer forum: Play Store update rejection tied to foreground service permissions, with a demo video deemed insufficiently explicit and limited operational guidance. Link: https://devforum.zoom.us/t/app-update-rejected-due-to-foreground-service-permissions/103026
  • Google Play Console support thread: developers report rejections for “insufficient information” about foreground service usage, without clarity on the missing criterion. Link: https://support.google.com/googleplay/android-developer/thread/299748806

Why this type of rejection is difficult to diagnose

  • Lack of granularity: the rejection message does not state whether the issue is the Play Console justification, the video, or their consistency.
  • Implicit reviewer expectation changes: what is “sufficient” at time T can be evaluated differently during a later update.
  • Implicit criteria: Play often expects an even more explicit demonstration of the trio user-initiated → perceptible → stoppable, as well as immediate functional dependency.

Resolution strategy: making the justification unambiguous

When a rejection is generic, the only robust approach is to remove all room for interpretation.

  • Play Console text: phrase the justification as a verifiable test: “if the user presses STOP, the session ends immediately and the extension loses NFC HSM access within the same second.”
  • Video: show, without cuts, the full sequence: user action → visible notification → STOP → immediate session loss on the extension side.
  • Semantic alignment: explicitly reuse Google Play terms: core feature, user benefit, perceptible, stoppable, cannot be deferred.
  • Remove misunderstandings: explicitly restate “not a VPN, not a proxy, no routing, strictly local scope.”

This field feedback explains why this dossier includes an implementation checklist, an evidence ↔ Google Play requirements mapping, and a reproducible evidence pack. In short, when a rejection is generic, the only effective response is a demonstration that no longer depends on interpretation.

Android 14+ — foreground service (FGS): declared type and verifiable justification

Android 14 requirement: using a foreground service requires an explicit service type declaration and a functional, perceptible, verifiable justification. The goal is to prove the work cannot be deferred without degrading the user experience. Here, the dependency is immediate and testable: STOP removes the notification, terminates the session, and the extension loses NFC HSM access within the same second.

Declared type and immediate functional dependency

  • Declared type: FOREGROUND_SERVICE_CONNECTED_DEVICE
  • Dependent core feature: PC Connection (phone ↔ Chromium extension)
  • Justification: the phone acts as an active gateway to an NFC HSM device used from a computer, initiated explicitly by the user.

If the foreground service is stopped (via the STOP action in the notification or by disabling auto-login), the PC Connection session is immediately terminated, and the browser extension loses NFC HSM access. Therefore, the task cannot be deferred by the system without breaking the expected feature. Android reference — Foreground Service types: https://developer.android.com/develop/background-work/services/fgs/service-types

Android 15: continuity of the doctrine

It further tightens discipline around foreground services (startup, usage, behavioral expectations) and the consistency between user action, runtime duration, and purpose. Consequently, the trajectory confirms the “visible, stoppable, bounded” principle. It also favors demonstrable implementations (explicit notification + STOP + immediate functional dependency). Reference: https://developer.android.com/about/versions/15/changes/foreground-services

Android 16 (API level 36): quotas, diagnostics, operational limits

Foreground services — changes (includes Android 16 / API level 36): https://developer.android.com/develop/background-work/services/fgs/changes

Android 16 cap: Android 16 introduces a stricter framework of quotas, execution limits, and diagnostics. As a result, it favors short, local-only, explicitly user-controlled workflows over implicit or prolonged sessions. Diagnostic reference: https://developer.android.com/develop/background-work/services/fgs/troubleshooting

Android continues to improve diagnostics and reduce allowed scenarios. Therefore, a local-only workflow that is visible and stoppable remains the most robust strategy across successive hardening waves.

Operational detail — Freemindtronic Android NFC app

Operational detail: the foreground service is strictly event-driven. Launching the app is not enough to activate it. Instead, it starts only when an NFC tag is presented. Then, it remains inactive in the absence of NFC events, with no local server and no always-on service.

Product impact and mitigation (Android 15/16, NFC, BAL, OEM specifics)

Symptom

  • Symptom: the NFC tag is correctly detected by the system, yet the attempt to relaunch or bring the UI to the foreground via PendingIntent is blocked by BAL (Background Activity Launch). Consequently, the user perceives no reaction, or degraded behavior, even though the NFC event is received.

Cause

  • Cause: Android 15, and even more Android 16, formally harden the rules for starting activities from the background. In particular, PendingIntent objects created by the app no longer implicitly carry the right to start or resume an activity in the foreground. This change directly impacts legacy NFC flows that relied on UI relaunch via PendingIntent, including when the target activity is already RESUMED. Official Android reference: https://developer.android.com/guide/components/activities/background-starts
Comparative diagram showing NFC behavior before Android 15 and the Background Activity Launch (BAL) block on Android 15 and Android 16 that prevents implicit UI relaunch via PendingIntent
Before Android 15, NFC tag detection could implicitly relaunch the UI via PendingIntent. Starting with Android 15 and Android 16, Background Activity Launch (BAL) blocks this implicit relaunch, even when the NFC event is correctly detected.

This behavior is observable even on Google Pixel (AOSP). Therefore, it confirms a structural platform change rather than an OEM-specific behavior.

Technical evidence — BAL block (Android 15 / 16)

On Android 15, and even more on Android 16 (API level 36), blocking background activity launches (Background Activity Launch) is a structural platform mechanism. Moreover, it is directly observable in system logs.

Typical Logcat excerpt (anonymized) during an NFC event that attempts to relaunch the UI via PendingIntent:

Background activity launch blocked: pkg=com.freemindtronic.EviPro reason=background_activity_launch_not_allowed intent=Intent { act=android.nfc.action.TAG_DISCOVERED ... } callerApp=ProcessRecord{...}

This message confirms that:

  • the NFC event is received by the system,
  • the UI relaunch attempt is explicitly blocked by Android,
  • the denial is independent from the app and results from BAL hardening at the platform level.

Therefore, this evidence clearly separates: structural Android changeapplication bug.

  • Additional NFC risk (platform): alongside BAL restrictions, NFC stack instabilities and behavior changes are observed on Android 15 and Android 16. They include NFC service crashes (DeadObjectException), intermittent tag read failures, and version-dependent differences. These items are documented in Google Issue Tracker, including Android 16: https://issuetracker.google.com/issues/456078994

Additional NFC risk (OEM)

  • Additional NFC risk (OEM): the issue is amplified on some devices due to manufacturer overlays and aggressive power optimizations. Public feedback and tickets report degraded or inconsistent NFC behavior on:
    • Samsung Galaxy (One UI 7/8 – Android 15/16): aggressive activity suspension, intermittent NFC disablement after updates, and behavioral differences between screen-on and screen-off states.
    • Xiaomi / Redmi / Poco (MIUI / HyperOS – Android 15/16): strong background restrictions, interactions between NFC, Bluetooth, and power saving, causing NFC scan failures or missing UI resumes.
    • OnePlus / Oppo (OxygenOS / ColorOS – Android 15/16): restrictive background task handling and NFC service variability across builds.
    • Fairphone 5 (Android 15): regressions reported after updates, with incomplete or delayed recognition of certain NFC tags.
    • Google Pixel (Android 15/16 AOSP): AOSP reference showing BAL is structural even without an OEM overlay, confirming it is not only a manufacturer issue.

Robust mitigation

  • Robust mitigation: remove any dependency on implicit UI relaunch via PendingIntent. Instead, NFC processing must run inside the existing activity instance when it is already active (appropriate launchMode, handle events through onNewIntent()). Alternatively, continue the flow through an explicit user-initiated action (notification action), in line with the Android “user-initiated” model recommended for Android 15+.

Key takeaway: starting with Android 15, NFC detection can work correctly without relaunching the UI. BAL blocks any implicit relaunch via PendingIntent. Therefore, a compliant implementation must process the event in the existing instance or require an explicit user action.

Known limits / behaviors not guaranteed by Android

  • Android does not guarantee automatic UI relaunch after a system event (NFC, intent, PendingIntent), especially starting with Android 15 (BAL).
  • NFC stack behavior can vary by Android version, system state (screen off, Doze, OEM restrictions), and manufacturer implementations.
  • Session continuity depends on the user-initiated model and on maintaining Android foreground service Google Play compliance (visible notification, STOP, bounded duration).

These limits are structural to the Android platform. Therefore, they are neither an application bug nor a functional deviation.

Evidence and audit

  • Evidence and audit: Android system logs explicitly reveal BAL blocks (“Background activity launch blocked” or equivalent messages) during NFC events. These logs are objective technical evidence. As a result, they should be archived in the internal compliance evidence pack and produced during Google Play review or security audits when needed.

This demonstrable functional dependency is a key element of Android foreground service Google Play compliance, as expected by reviewers since Android 14+.

Compatibility burden and update cycle impact

This section explains why these changes are not a minor code tweak, but a structural transformation of legacy Android workflows.

Since Android 6, the platform has stacked successive restrictions. Consequently, a “simple targetSdk upgrade” can become a structural refactor. The stack includes: background execution hardening, BAL restrictions on activity starts, stricter FGS governance with justification requirements, and NFC variability across versions and OEM implementations.
Starting with Android 15, apps that create PendingIntent objects no longer implicitly inherit BAL privileges. Therefore, explicit opt-in becomes required, which breaks many legacy workflows (notification → UI resume, “system event → bring activity to front”, NFC scenarios, etc.).

At the same time, Android 15/16 introduce documented behavior changes (targetSdk and compat framework changes). In addition, public tickets also show platform-level NFC instabilities. As a result, multi-device testing becomes more complex, degraded modes multiply, and release cycles slow down mechanically.

Official references (Android/Google):

• BAL restrictions (Android 15+), opt-in required for PendingIntent: https://developer.android.com/guide/components/activities/background-starts
• Android 15 — behavior changes (targeting API 35): https://developer.android.com/about/versions/15/behavior-changes-15
• Android 15 — compat framework changes (BAL privileges rescind by creator): https://developer.android.com/about/versions/15/reference/compat-framework-changes
• Android 16 — behavior changes (Android 16 / API level 36): https://developer.android.com/about/versions/16/behavior-changes-16

• Set up the Android 16 SDK (API 36): https://developer.android.com/about/versions/16/setup-sdk
• Google Play target API level requirement (enforced migration cadence): https://developer.android.com/google/play/requirements/target-sdk
• Android Developers Blog (Android 15 AOSP) — PendingIntent creators block BAL by default: https://android-developers.googleblog.com/2024/09/android-15-is-released-to-aosp.html

Developer feedback & public tickets (similar issues):

• StackOverflow (Android 15 BAL hardening, activity blocked via PendingIntent): https://stackoverflow.com/questions/77679032/with-android-15-bal-hardening-this-activity-start-may-be-blocked-if-the-pi-creat
• GitHub (Flutter community — request for BAL opt-in support, activity no longer starts): https://github.com/fluttercommunity/plus_plugins/issues/3688
• Reddit (React Native — activity launch blocked on Android 15): https://www.reddit.com/r/reactnative/comments/1k1zpk0/android_15_background_activity_launch_issue/
• Google Issue Tracker (NFC broken Android 15 Beta 2): https://issuetracker.google.com/issues/340933949
• Google Issue Tracker (NFC service dead / attempted recover): https://issuetracker.google.com/issues/341807213
• Google Issue Tracker (NFC crash DeadObjectException Android 16): https://issuetracker.google.com/issues/456078994

Core feature: PC Connection for NFC HSM (Chromium extension)

This section ties the foreground service to a core workflow. It also clarifies what breaks when the service stops.

Local phone ↔ desktop session: purpose and bounded scope

In practice, the Android app opens a local phone ↔ desktop session. Through this session, the Chromium-based extension sends explicitly authorized requests to the phone. Consequently, operations stay limited to NFC HSM actions defined by the user.

Local encrypted channel: segmented-key protocol and per-session unique key

Next, the session uses a local encrypted channel. It applies a segmented-key protocol and generates a unique key per session. As a result, the design avoids secret reuse and improves resilience against local interception.

Local HTTP endpoint: configurable port and anti-ambiguity (10001)

To support desktop calls, the service exposes a local HTTP endpoint on a configurable port (default: 10001). Therefore, the endpoint serves one purpose only: PC Connection. It does not act as a proxy, a tunnel, or a generic network relay.

Moreover, the endpoint remains session-bounded (unique per-session key, limited duration, immediate STOP). Accordingly, it provides no routing capability (no proxy, no tunnel, no routing).

User-initiated trigger: visible, stoppable, bounded

Importantly, the app does not run an “always-on” background daemon. Instead, the user triggers a perceptible session that stays time-bounded and stoppable at any moment.

Reviewer point: the user starts the PC Connection session explicitly. Without an explicit user action (PC Connection activation / expected usage), the app does not keep a foreground service running.

Finally, the workflow enables NFC HSM usage from a desktop browser without cloud dependency and without external infrastructure.

Local discovery: EviDNS Zeroconf (serverless)

On the desktop side, PC Connection relies on EviDNS Zeroconf. As a result, Freemindtronic extensions discover the phone automatically on the local network. They also retrieve its IP address and pairing port. Meanwhile, the process stays fully local: it requires no dedicated DNS/DHCP server and exposes nothing beyond the local perimeter.

Diagram illustrating the Freemindtronic secure PC Connection scenario: Chromium extension, Android foreground service, local encrypted channel using a segmented-key protocol with a unique key per session, and NFC HSM usage without any external server.

Freemindtronic secure scenario — A request initiated from the Chromium extension triggers the NFC HSM interaction on the Android phone. The secret is read locally and transmitted via a local encrypted channel based on a segmented-key protocol with a unique key per session. No external server is involved at any point.

Demonstrable functional dependency

PC Connection relies on a continuous session that remains visible and user-controlled on the Android phone. If the user presses STOP (or disables the feature), the session ends immediately. Consequently, the browser extension loses access and the desktop cannot use the NFC HSM until the user starts a new session.

EviDNS Zeroconf: serverless local pairing for desktop extensions

EviDNS Zeroconf (serverless) simplifies and secures local setup. Specifically, it supports service discovery and pairing between a desktop computer and an NFC terminal (phone) on the same network.

In practical terms, EviDNS lets desktop extensions locate the phone and retrieve the parameters required for PC Connection (IP + port). Therefore, it improves multi-OS robustness. Additionally, it removes any dependency on external infrastructure.

  • Serverless: the local pairing does not rely on a dedicated DNS/DHCP server.
  • Automatic discovery: the extension identifies the NFC terminal on the local network and collects IP/port for the session.
  • Sovereign alignment: pairing stays within the user’s local perimeter, so the workflow does not need cloud to “keep” the connection.
EviDNS Serverless Technology How it work ZeroConf DNS-SD mDNS by Freemindtronic Andorra
EviDNS Serverless Technology How it work ZeroConf DNS-SD mDNS by Freemindtronic Andorra

Key point

On the desktop side, Freemindtronic extensions use EviDNS Zeroconf to discover the phone on the local network and retrieve its IP address and pairing port — without a dedicated DNS/DHCP server.

Android foreground service: user controls (notification, STOP, settings)

A foreground service remains defensible only when user control is explicit, continuous, and verifiable.
This applies not only to the end user, but also to auditors and Google Play reviewers.

In practice, auto-connection may be enabled by default to preserve a smooth experience.
However, the user always retains full control.
At any time, the session can be stopped immediately through the STOP action in the notification.
In addition, the user can disable auto-login using a dedicated switch (Wi-Fi icon) in the “Freemindtronic Extension” settings.

Notification Foreground Service : STOP immédiat (Freemindtronic Connexion PC NFC HSM)

PC Connection relies on four concrete controls that an auditor can validate within seconds:

Control Where it appears What it demonstrates
Persistent notification Android notification center Session visibility; no hidden activity
STOP action Button in the notification Immediate user-driven termination (stoppable)
Configurable auto-connection Extension settings (Auto-login + Wi-Fi icon) “Enabled by default” does not mean “enforced”
Configurable local port Application settings (default 10001) Operational transparency and predictable scope

Important note: when the user presses STOP, both the foreground service notification and the associated session terminate immediately.
By design, the system retains no residual UI state.
As a result, capturing an “after STOP” screen is impossible.
This immediate disappearance is precisely the proof that the service is stoppable and non-persistent.

Edge case (Android 13+): if the user denies the POST_NOTIFICATIONS permission, the session can no longer remain fully perceptible.
Therefore, to stay aligned with Google Play requirements, the flow must either guide the user to re-enable notifications or prevent activation of a non-visible PC Connection session.

Key proof: full and granular user control (data, alerts, port, shutdown)

One decisive point stands out: the user does not endure the foreground service.
Instead, the user controls it entirely.
This control remains observable through a persistent notification, an immediate STOP action, explicit deactivation options, and fine-grained authorization by data category.

Enabled by default, but never enforced

At installation, the auto-connection service may be enabled by default to ensure immediate availability of PC Connection.
However, this usability choice remains strictly bounded.
At any moment, the user can stop the session or disable automatic startup with a single action.
As a result, the principle remains clear: “enabled by default ≠ permanent ≠ uncontrollable.”

Observable proof Where What it demonstrates
Persistent notification “Auto-connection service active” Phone (Android status bar) Session visibility and transparency
STOP button (shutdown action) Android notification Immediate user-driven termination (stoppable)
“Auto-login” switch (Wi-Fi icon) User settings > “Freemindtronic Extension” Simple and explicit deactivation
Configurable HTTP port (default 10001) Service settings Explicit local scope and clear diagnostics
Custom device name Pairing settings Local traceability and controlled association

Least privilege enforced at the data level

One of the rare differentiators lies in the ability to restrict PC Connection to what is strictly required.
Each request category between the browser extension and the phone remains individually controlled.
Consequently, a persistent session becomes a user-bounded session rather than an open channel.

Setting Data type / usage Control
isLogIn Credential requests ON / OFF
isLogWeb Web extension requests ON / OFF
isLogInAdd Adding new accounts ON / OFF
isLogCard Credit card data ON / OFF
isLogWebCard Cards via web extension ON / OFF
isLogCryptoMain Cryptocurrency requests ON / OFF
isLogCrypto Detailed crypto data ON / OFF
isLogIOTA IOTA information ON / OFF
isLogBank Bank account data ON / OFF
isLogBip39 BIP39 seed phrases ON / OFF
isLogPhone Phone numbers ON / OFF
isLogNote Secure notes ON / OFF
isLogCipher Encryption keys (AES) ON / OFF
isLogCloud Cloud data (if applicable) ON / OFF
isLogPing Connection ping ON / OFF

Alert control: notifications, vibration, ringtone

In addition, the user can configure how the session signals activity.
This flexibility improves perceptibility while avoiding intrusive behavior.

Setting Function
isLogPingNotification Notification on ping
isLogVibrate Vibration on requests
isLogRing Audible alert on requests

Why this matters: a compliant foreground service is not merely “visible”.
It must also remain stoppable, disableable, and ideally rights-bounded.
Here, the user controls both the session itself and every exposed data class.

Key takeaway: the foreground service grants no extended access by default.
Instead, it materializes a visible and stoppable session boundary, within which each data category remains explicitly controlled by the user. This approach combines visibility, user control, and a measurable reduction of the attack surface, notably through the absence of keyboard input and enforced screenshot blocking.

Local network scope: no proxy, no VPN, no routing

A “local session” is not a marketing claim.
Rather, it represents a measurable and verifiable architectural commitment.

The illustration below highlights a critical transparency point:
the communication port used between the Android phone and the Freemindtronic browser extension is explicitly configurable by the user (default: 10001).

Illustration montrant un service de premier plan Android où l’utilisateur peut modifier le port de communication (10001 par défaut) utilisé pour l’échange local entre un téléphone Android et une extension navigateur Chromium Freemindtronic pour l’usage d’un NFC HSM

This deliberate choice allows users, auditors, and Google Play reviewers to verify immediately that PC Connection operates within a bounded and unambiguous local network scope.
Accordingly, the foreground service does not conceal any tunneling behavior, generic relay, or implicit traffic redirection.

PC Connection deliberately reduces its operational perimeter:

  • No proxy: the application does not function as a generic HTTP or SOCKS proxy and does not relay third-party traffic.
  • No VPN: it creates no network tunnel, does not intercept browsing activity, and does not implement VpnService.
  • No routing: the feature does not redirect remote traffic or act as a network gateway.
  • Explicit, configurable port: the exchange port (default 10001) remains visible, modifiable, and limited to PC Connection.
  • No cloud dependency: no external server is required to maintain the session.

This explicit network bounding aligns with the Freemindtronic sovereign model:
no account, no user identification, and no central database.
All exchanges remain confined to the user’s local network, while secrets stay under user control and protected by NFC HSM devices.

Key point: port configurability is not an implementation detail.
Instead, it proves that PC Connection operates neither as a proxy nor as a VPN, but as a visible, auditable, local session enabled by a strictly bounded Android foreground service.

What the PC Connection does not do

  • It does not collect user data for analytics or profiling purposes.
  • It does not transfer secrets to any remote server; the session is designed to remain local-only.
  • It does not operate as a proxy or a VPN and performs no generic traffic interception.
  • It does not run silently in the background; the notification and STOP action make the state observable at all times.

Turning compliance into a competitive advantage

Beyond baseline requirements, PC Connection applies least privilege at the data level through per-category granular permissions.
Few competing solutions implement this level of control.
Meanwhile, store policies now require security applications to document and demonstrate their behavior.
This obligation is not a formality; instead, it acts as a maturity filter.

Over time, solutions that cannot explain a persistent activity in a verifiable way expose themselves to:

  • publication rejections and prolonged review cycles,
  • operating system–level restrictions,
  • loss of trust caused by opaque behavior,
  • increased regulatory pressure on sensitive use cases.

By contrast, the Freemindtronic implementation makes the foreground service measurable.
The session remains visible, stoppable immediately, configurable through auto-login settings, and strictly bounded to a local scope.
As a result, this operational clarity aligns with high-assurance environments.
It also becomes a differentiator when other solutions rely on ambiguous background behavior.

Approach Visible (notification) Immediate stop Per-data-type granularity Local scope Cloud dependency
Freemindtronic (PC Connection) Yes Yes (STOP + auto-login disable) Yes (per category) Yes (local-only) No
Generic “background” approach Often no Often no Rarely Variable Often yes
“Cloud-first” approach Variable Variable Variable No (network-dependent) Yes

Verifiable transparency: downloads, signatures, version history

A trust marker does not rely on statements alone.
Instead, it must allow independent verification.
For this reason, Freemindtronic publishes resources that support auditability and long-term software traceability.

Resource What it provides Link
Official downloads Direct access to software, version information, and checksums (MD5/SHA256 depending on pages), enabling reproducible verification https://freemindtronic.com/support/download/
Version history Traceability of changes over time (internal audit, compliance, change justification) https://freemindtronic.com/version-history-of-software-freemindtronic-andorra/
Technical guides (FAQ) Procedures, IP/port references, and architectural explanations for support and audit https://freemindtronic.com/support/faq-technical-guides/

This documented transparency reinforces the credibility of a “local-only” architecture.
It also strengthens the ability to meet compliance requirements without relying on an opaque cloud layer.

Implementation checklist for auditors

The following points can be verified quickly by a reviewer, an auditor, or a security team.
This checklist also serves as a practical guide for any solution that must justify a foreground service in a sensitive context.

  • Visible: a persistent notification clearly indicates an active session.
  • Stoppable: a STOP action is directly accessible from the notification.
  • Configurable: auto-connection can be disabled in user settings (extension: Auto-login).
  • Minimal duration: the service runs only during the PC Connection session.
  • Bounded scope: communication remains local; no proxy, VPN, or routing behavior.
  • Least privilege: granular permissions are enforced per data category.
  • Operational transparency: the port is configurable and behavior remains deterministic.

Evidence pack (Google Play review / internal audit)

To reduce back-and-forth, provide the following minimum evidence set during review:

  • Capture 1: persistent notification showing “Auto-connection service active”.
  • Capture 2: the STOP action visible inside the notification.
  • Capture 3: “Freemindtronic Extension” settings page with the Auto-login switch and the Wi-Fi icon.
  • Capture 4: port screen (default 10001) plus the phone name (pairing).
  • Capture 5: an example of granular controls (at least 5 categories ON/OFF).

This evidence pack is designed for a Google Play reviewer evaluating a foreground service.
It provides observable, reproducible artifacts aligned with official requirements.

What Google Play can verify without reading the code

  • A persistent notification is present during a PC Connection session
  • The service stops immediately through STOP (no residual state)
  • The browser extension loses the session instantly
  • No VpnService declaration is involved
  • The local port is explicit (10001 by default, configurable)

These checks are sufficient to establish FGS compliance without source inspection.

What the reviewer will NOT see

  • No source code to analyze in order to understand behavior.
  • No remote server, no cloud, and no third-party API involved.
  • No network tunnel, no VPN, and no implicit proxy behavior.
  • No invisible persistent activity after STOP.
  • No screenshots can be captured on sensitive screens in production builds (system-level screenshot locking).
  • No keyboard input is required during PC Connection usage (on both phone and computer), making keylogger attacks ineffective.

Video plan (60–90 s): enable PC Connection → show the notification → press STOP → relaunch → disable Auto-login → confirm it does not restart → show port 10001 → prove the extension loses the session when STOP is pressed.

Android foreground service: evidence ↔ Google Play requirements mapping (reviewer view)

Google Play requirement Evidence provided What the reviewer checks
Core feature with user benefit PC Connection demo (extension ↔ phone) The service is required for the primary workflow
Perceptible at all times Persistent notification No “hidden” execution
Stoppable on demand STOP action inside the notification Immediate stop with minimal friction
Cannot be deferred without breaking UX Immediate session loss on the extension side when STOP is pressed Demonstrable functional dependency
Minimal / bounded duration Service runs only during the PC Connection session No persistence beyond the need

Quick audit: verify an Android foreground service and the local-only scope (2 minutes)

This procedure allows an auditor or a reviewer to verify, within minutes, three core properties: visibility, immediate stoppability, and a strict local-only scope.

  1. Verify perceptibility: enable PC Connection, then open the Android notification shade and confirm the presence of a persistent notification.
  2. Verify stoppability: press STOP in the notification and confirm that the session terminates immediately.
  3. Verify deactivation: in the “Freemindtronic Extension” settings, disable auto-login (switch + Wi-Fi icon), then confirm that no automatic restart occurs.
  4. Verify functional dependency: observe that the browser extension loses the session as soon as the service stops.
  5. Verify local scope: confirm that the port (default 10001) is a local parameter and that no cloud service is required for the session to operate.

Tip: on the extension side, automatic phone discovery (IP + port) can rely on EviDNS Zeroconf (serverless). This approach simplifies local pairing without requiring any dedicated infrastructure.
References: https://freemindtronic.com/technology/evidns-zeroconf-serverless-technology/ and https://freemindtronic.com/support/faq-technical-guides/

Sovereign use case: transparency and operational continuity

In sovereign or high-constraint environments, the worst scenario is not only an incident.
More critically, it is an operational dead end caused by an opaque tool.
A feature that silently depends on background execution may be restricted by the OS and fail precisely when it matters most.

By designing PC Connection around a foreground service that is visible, stoppable, configurable, and strictly local, the user can prove—at runtime—what is executing and why.
As a result, this transparency increases resilience against policy hardening.
It also reduces the risk of last-minute incompatibilities during sensitive deployments.

Finally, when comparable scenarios involve attempted exfiltration, a hardware-rooted sovereign approach limits the impact.
If secrets remain confined to NFC HSM devices and operations stay explicitly mediated by the user, any data recovered out of context remains unusable in clear form.

Note: PC Connection does not rely on the Play Integrity API or on SafetyNet to operate.
Compliance rests on observable mechanisms (notification, STOP, local scope), not on remote or opaque attestations.

Glossary

Foreground service type (FGS type)

Foreground service type API 34+

A foreground service type explicitly qualifies the nature of an Android foreground service.
As a result, the system—and Google Play—can understand why the app runs a visible task.
Since Android 14, developers must declare an appropriate type for each foreground service and, when required, also declare the associated FGS permission.
This requirement turns a technical constraint into a compliance proof and a trust marker for audit.
Keywords: Android 14 foreground service type, API 34 FGS types required, Play Console FGS declaration.
Foreground Service declaration in Play Console

FGS declaration + reviewer video

The FGS declaration in Play Console structures the Google Play review for apps targeting Android 14+.
First, the developer describes the feature that uses the foreground service.
Next, the developer explains the impact if the system defers or interrupts the task.
Finally, a video link demonstrates how the user triggers the feature, making the justification verifiable.
Keywords: Google Play foreground service requirements, foreground service video demonstration, reviewer evidence pack.
Foreground Service permission

FOREGROUND_SERVICE_* permissions

A Foreground Service permission constrains certain types of foreground services.
In practice, the app does more than display a notification; it aligns its manifest with the real purpose of the service.
Moreover, this granularity helps auditors verify that the app does not over-declare capabilities.
Keywords: FOREGROUND_SERVICE permission Android, manifest permission API 34, least privilege Android service.
Foreground service notification

Persistent notification and immediate control

A foreground service notification makes the session perceptible and therefore auditable by the user.
It materializes the ongoing execution and exposes an immediate control (STOP), proving that the task remains stoppable.
This visible signal directly satisfies the Google Play rule: no hidden activity.
Keywords: foreground service notification, visible foreground service, stop foreground service.
POST_NOTIFICATIONS

Android 13+ notification permission

The POST_NOTIFICATIONS permission governs notification display on Android 13+.
If the user denies notifications, the app must remain consistent with the “perceptible” requirement.
Accordingly, the flow should either guide the user or prevent activation of a non-visible session.
This behavior strengthens the store-readiness of an FGS workflow.
Keywords: Android 13 notification permission, foreground service notification blocked, perceptible to user.
shortService / systemExempted

FGS exceptions (special cases)

Google Play documents exceptions such as shortService and systemExempted.
However, these cases do not apply to typical persistent session usage.
Therefore, a security app benefits from stating that it remains within the standard model:
core feature, notification, STOP, and minimal duration.
Keywords: short foreground service, systemExempted foreground service, foreground service policy.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821

Demonstrable functional dependency

Immediate test (STOP proof)

FAQ — Android foreground service

Why must an FGS be declared in Play Console, and not only in the manifest?

Google Play reviewer requirements: description, impact, video

Because Play Console does not review code alone.
It also evaluates the user-facing justification.
For each declared foreground service type, the developer must describe the feature, explain what happens if the task is deferred or interrupted, and provide a video showing the user action that triggers PC Connection.
As a result, this process reduces reviewer back-and-forth and makes the FGS auditable.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
Why choose CONNECTED_DEVICE instead of REMOTE_MESSAGING for PC Connection?

Type justification: NFC HSM and local gateway

Because PC Connection does not merely “relay messages”.
Instead, it maintains a local session that serves a hardware-based use case: accessing an NFC HSM from a desktop via a Chromium extension.
In this model, the phone acts as an active gateway to a device and to a bounded local flow.
Moreover, STOP immediately terminates the session, which proves functional dependency without implicit persistence.
Keywords: CONNECTED_DEVICE NFC, foreground service connected device use case, local-only phone-to-browser bridge.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
Does the foreground service turn the app into a proxy, VPN, or network relay?

No: strict local-only scope and user control

No.
PC Connection implements neither a proxy, nor a VPN, nor any form of routing.
Instead, it maintains a strictly local-only session and exposes it visibly through a notification.
The user can stop the session instantly via STOP, at which point the extension immediately loses access to the NFC HSM.
Keywords: no VpnService, no Android proxy, local-only foreground service security.
What changes with Android 15 for foreground services in security workflows?

Duration, user action consistency, immediate STOP

Android 15 further tightens the foreground service framework.
Consequently, it favors implementations that start on a user action, remain visible, and stop immediately on demand.
Therefore, a short, local-only, stoppable session becomes more robust than implicit persistence.
Reference: https://developer.android.com/about/versions/15/changes/foreground-services
If Android blocks or stops the service, how can it be diagnosed without background workarounds?

FGS troubleshooting: understand refusals and fix them cleanly

First, verify that the FGS type, associated permission, and start scenario are consistent.
Next, use the official Foreground Services diagnostics to identify “not allowed” errors and operational limits.
By doing so, you correct the root cause instead of bypassing the framework.
Reference: https://developer.android.com/develop/background-work/services/fgs/troubleshooting
What should the Play Console video show to validate a foreground service?

User trigger, notification, STOP, immediate impact

Start by showing the user action that triggers the core feature (PC Connection).
Then display the persistent notification to prove perceptibility.
Next, press STOP to demonstrate immediate termination.
Finally, show the functional impact: the extension loses the session as soon as the service stops, proving the task cannot be deferred without breaking the expected experience.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
If the user blocks notifications, does PC Connection remain compliant?

Perceptible also means controllable

No.
Google Play expects execution to remain perceptible.
Therefore, if notifications are blocked (Android 13+), the app must stay consistent: either guide the user to re-enable notifications or adapt the flow to avoid a non-visible active session.
This approach preserves the “visible, stoppable, bounded” logic and reduces reviewer confusion.
Keywords: foreground service notification blocked, Android 13 POST_NOTIFICATIONS, perceptible to user.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
Why does Google insist on “user-initiated” for a foreground service?

The session starts because the user wants it

A foreground service is not meant to “run by itself”.
Instead, it must serve a core feature that the user triggers and understands.
Accordingly, the app ties the start to an explicit action (PC Connection), exposes the state through a notification, and provides immediate termination via STOP.
This design demonstrates continuous user intent and avoids any interpretation of “disguised persistence”.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
If Android refuses to start the service (“Start not allowed”), what should be done?

Diagnose first, then fix type, permission, and scenario

Begin by checking consistency between the FGS type, the associated permission, and the start scenario (user action).
Then consult the official Foreground Services diagnostics, which document common “not allowed” causes and expected fixes.
By addressing the cause instead of bypassing background limits, Play compliance remains intact.
Reference: https://developer.android.com/develop/background-work/services/fgs/troubleshooting
What is an Android foreground service?

Official definition and security role

An Android foreground service executes a task that the user must see, understand, and be able to stop.
It always displays a persistent notification indicating ongoing activity.
This model prevents sensitive background execution and now serves as a transparency and security marker.
Official reference: https://developer.android.com/develop/background-work/services/foreground-services
How do you start a foreground service on Android?

User-initiated start and immediate notification

A foreground service must start in a strictly user-initiated scenario.
The user triggers a core feature (for example, PC Connection), after which the app starts the service and displays the persistent notification immediately.
Since Android 14, the app must also declare a consistent service type and, when required, the associated permission.
Official reference: https://developer.android.com/develop/background-work/services/fgs/declare
Why must a foreground service display a notification?

Perceptibility, user control, and auditability

The notification is not a UI detail.
It is the core user-control mechanism.
It makes the task perceptible, enables an immediate stop (for example, STOP), and prevents any hidden activity.
For Google Play and Android, a sensitive task without a notification equals non-compliance.
Reference: https://support.google.com/googleplay/android-developer/answer/13392821
How can foreground service notifications be removed?

Stop the service instead of hiding its state

It is not compliant to permanently hide a foreground service notification while the service remains active.
The only correct way to remove the notification is to stop the service.
If notifications are blocked at the system level (Android 13+), the app must avoid maintaining a non-perceptible session or guide the user to restore visibility.
Official reference: https://developer.android.com/develop/background-work/services/foreground-services


Service premier plan Android : Sécurité et contrôle utilisateur

Service premier plan Android illustré sous Android 16 avec notification persistante, action STOP, contrôle utilisateur et périmètre strictement local

Service premier plan Android : conformité Google Play, contrôle utilisateur et Connexion PC NFC HSM via extension Chromium. Ce dossier montre comment une exigence Foreground Service (FGS) devient un marqueur de confiance : session local-only (sans proxy, sans VPN, sans routage), appairage local EviDNS Zeroconf, notification persistante avec bouton STOP, contrôle granulaire des données et audit rapide vérifiable.

Résumé exécutif

Contexte

Android durcit l’exécution en arrière-plan (background execution) et renforce l’encadrement des services de premier plan (Foreground Services) afin de limiter l’activité invisible, réduire les abus et améliorer fiabilité et autonomie. Sur Android 16 (API level 36), cette exigence devient vérifiable et incontournable. Loin d’être une contrainte pénalisante, un service de premier plan correctement conçu devient un marqueur de confiance : transparence, contrôle utilisateur et périmètre opérationnel minimal.

Objectif

Documenter, de manière vérifiable, l’usage d’un service de premier plan Android comme brique indispensable à une fonctionnalité cœur : Connexion PC. L’objectif est de montrer comment une exigence Google Play devient un marqueur de transparence, de contrôle utilisateur et de maturité sécurité.

Portée

Fonction analysée : Connexion PC (téléphone ↔ ordinateur) pour utiliser des dispositifs NFC HSM via une extension navigateur Freemindtronic basée sur Chromium, sans installer de logiciel sur le poste. Session local-only (pas de proxy, pas de VPN, pas de routage), port configurable (défaut 10001).

Doctrine

Le service n’est pas utilisé pour “rester actif”, mais pour rendre une session sensible visible, stoppable et désactivable : notification persistante, bouton STOP, auto-login réversible, et contrôle granulaire des catégories de données autorisées.

Différenciateur stratégique

Dans un contexte de durcissement Android/Google Play, les solutions opaques deviennent fragiles. Une implémentation démontrable (contrôle utilisateur + périmètre local + transparence) devient un avantage concurrentiel. Ce dossier explique pourquoi ce service existe, comment l’utilisateur le maîtrise, et en quoi cette approche transforme une exigence de conformité en atout stratégique.

À retenir

Le service de premier plan Android est utilisé uniquement pour maintenir une session Connexion PC visible et stoppable (notification persistante + STOP) permettant l’usage d’un NFC HSM sur ordinateur via extension Chromium. L’utilisateur peut désactiver l’auto-login, limiter chaque catégorie de données autorisée, vérifier la portée local-only (pas de proxy/VPN/routage), et auditer la conformité en 2 minutes.
📱 Application Freemindtronic (EviPro) sur Google Play clic ici

Note technique

Temps de lecture (résumé) : ~2 minutes
Temps de lecture (intégral) : ~20–25 minutes
Temps de vérification (audit rapide) : ~2 minutes
Date de publication : 2026-01-16
Dernière mise à jour : 2026-01-20
Niveau : Android / Sécurité / Audit
Posture : Local-only, user-in-control, least privilege
Rubrique : Tech Fixes & Security Solutions
Langues disponibles : FR  · EN · CAT · ES

Niveau d’enjeu : 8.4 / 10 — conformité store, transparence logicielle & sécurité des sessions locales

Note éditoriale — Ce dossier s’inscrit dans la rubrique Tech Fixes & Security Solutions. Il prolonge les analyses consacrées aux architectures souveraines, au contrôle utilisateur et aux dérives du modèle « actif en arrière-plan donc acceptable ». Ici, l’enjeu n’est pas seulement Android : c’est la capacité à prouver (audit), documenter (conformité) et borner (moindre privilège) une fonctionnalité de sécurité qui dépend d’une session persistante. Le dossier examine la Connexion PC (extension Chromium), l’appairage local EviDNS Zeroconf, et la granularité des contrôles par type de données, en démontrant comment une exigence Google Play devient un marqueur de confiance. Ce contenu s’inscrit dans la continuité des travaux publiés dans : Tech Fixes & Security Solutions  et, pour l’axe souveraineté & architectures de confiance :Digital Security. Il suit la Déclaration de transparence IA de Freemindtronic Andorra — FM-AI-2025-11-SMD5.
Schéma de la Connexion PC Freemindtronic illustrant le service premier plan Android, l’appairage local EviDNS Zeroconf, le serveur HTTP sécurisé, le contrôle granulaire des données et l’extension Chromium.

2025 Tech Fixes Security Solutions Technical News

SSH VPS Sécurisé avec PassCypher HSM

2025 Tech Fixes Security Solutions

Secure SSH key for VPS with PassCypher HSM PGP

2026 Tech Fixes Security Solutions

Service premier plan Android : Sécurité et contrôle utilisateur

2024 Tech Fixes Security Solutions

Unlock Write-Protected USB Easily (Free Methods Only)

2025 Digital Security Tech Fixes Security Solutions Technical News

SSH Key PassCypher HSM PGP — Sécuriser l’accès multi-OS à un VPS

2023 EviKey & EviDisk EviKey NFC HSM NFC HSM technology Tech Fixes Security Solutions Technical News

Secure SSH Key Storage with EviKey NFC HSM

2025 Tech Fixes Security Solutions

NFC HSM SSL Cert IP: Trigger HTTPS Certificate Issuance DNS-less

2025 Tech Fixes Security Solutions

Let’s Encrypt IP SSL: Secure HTTPS Without a Domain

2025 Tech Fixes Security Solutions

Emoji and Character Equivalence: Accessible & Universal Alternatives

2024 Tech Fixes Security Solutions

How to Defending Against Keyloggers: A Complete Guide

En sécurité mobile et Android ↑ cette note appartient à la rubrique Tech Fixes & Security Solutions et s’inscrit dans l’outillage opérationnel souverain de Freemindtronic (HSM, contrôle utilisateur, architectures local-only, audit).

Quick navigation

🔝 Retour en haut

Service premier plan Android : pourquoi il est devenu un marqueur de sécurité

Un service de premier plan est destiné aux opérations qui doivent rester actives, visibles pour l’utilisateur, et arrêtables à tout moment.
Dans la pratique, il est souvent détourné par des applications qui tentent de rester actives silencieusement, d’automatiser des actions sans intention explicite, ou de maintenir une activité en arrière-plan au-delà du strict nécessaire.

Pour un produit de sécurité, la bonne posture n’est pas de « contourner la règle », mais de s’y aligner : l’utilisateur doit toujours savoir quand une session sensible est active, ce qu’elle fait, et comment l’arrêter instantanément.
Ce point devient critique lorsque le téléphone sert de passerelle entre des modules matériels (NFC HSM) et un environnement navigateur sur ordinateur.

Android : arrière-plan vs Service premier plan Android (Foreground Service)

Android durcit depuis plusieurs versions l’exécution en arrière-plan (background execution) pour limiter l’activité invisible, réduire les abus, et préserver batterie et fiabilité. Dans ce contexte, une fonctionnalité qui doit rester active sans être au premier plan doit être justifiée et rendue perceptible. C’est précisément le rôle d’un service de premier plan : rendre l’activité sensible visible (notification), stoppable (STOP), et bornée dans le temps.

Cette approche s’inscrit dans une “foreground service Android security architecture”, alignée sur les exigences de service de premier plan Android conformité Google Play, où visibilité, arrêt immédiat et périmètre local-only constituent des critères centraux.

Point clé : le bon raisonnement n’est pas « comment rester actif en arrière-plan », mais « comment rendre une dépendance persistante auditable et contrôlable ». Un Foreground Service bien conçu devient ainsi un marqueur de transparence, pas un contournement.

Source officielle Android Developers — types de services de premier plan requis (Android 14+, y compris connectedDevice pour interactions avec des périphériques comme NFC et Bluetooth) :https://developer.android.com/about/versions/14/changes/fgs-types-required

Threat Model : pourquoi la Connexion PC doit rester visible et bornée

Hypothèse réaliste : un téléphone utilisé comme passerelle (mobile ↔ desktop) est une surface d’attaque. Le service de premier plan est ici un mécanisme de contrôle et de preuve (notification + STOP), pas un moyen de persister silencieusement.

Risque Exemple Mesure Freemindtronic
Persistance invisible Service actif sans que l’utilisateur le sache Foreground Service + notification persistante + arrêt immédiat
Sur-autorisation Session ouverte = accès trop large Contrôle granulaire par type de données (moindre privilège)
Élargissement réseau Proxy/VPN déguisé, routage implicite Local-only : pas de proxy, pas de VPN, pas de routage
Défaillance opérationnelle OS stoppe le service → rupture de workflow Session explicitement dépendante du FGS, donc prévisible et vérifiable

Protection contre les attaques par capture et interception : l’application Freemindtronic applique un verrouillage système des captures d’écran sur l’ensemble des écrans sensibles.
Ce mécanisme empêche toute capture via screenshot, screen recording ou API équivalente, y compris par des malwares résidents.
Les démonstrations et captures fournies à des fins de revue ont été réalisées à partir d’une version de debug dans laquelle cette protection est volontairement désactivée.

De plus, la Connexion PC repose sur un modèle sans contact et sans saisie clavier, ni sur le téléphone ni sur l’ordinateur.
En conséquence, les attaques par keylogger sont structurellement inopérantes, ce qui réduit significativement la surface d’attaque côté poste de travail.

Service premier plan Android : exigences Google Play (sources officielles)

Google Play encadre strictement l’usage des services de premier plan : ils doivent être justifiés par une fonctionnalité cœur bénéfique pour l’utilisateur, être perceptibles à tout moment (notification explicite), et rester arrêtables à la demande. Depuis Android 14, la déclaration d’un type de service de premier plan est obligatoire.

Références officielles Android & Google Play :

Dans ce dossier, ces exigences sont appliquées à un cas réel et vérifiable (Connexion PC + NFC HSM), en démontrant comment le contrôle utilisateur (notification, STOP, désactivation, granularité) transforme une contrainte de conformité en preuve de maturité sécurité.

Retour d’expérience : validation puis rejet sur la déclaration Foreground Service Connected Device

Contexte réel de publication : la déclaration du type FOREGROUND_SERVICE_CONNECTED_DEVICE a été acceptée lors d’une première soumission, avec vidéo démonstrative et description justificative couvrant les exigences Android 14 et Android 15. Toutefois, lors d’une mise à jour fin décembre, la même déclaration a été rejetée avec une demande générique de « précisions supplémentaires », sans indication exploitable sur les nouveaux détails attendus.

Ce type de situation n’est pas isolé. Plusieurs développeurs rapportent des cas similaires où une déclaration Foreground Service initialement acceptée est ensuite rejetée lors d’une mise à jour, avec un message ambigu indiquant que le problème peut se situer soit dans la description justificative, soit dans la vidéo, sans préciser lequel des deux est jugé insuffisant.

Un signal de rejet ambigu, documenté par la communauté

  • Reddit – r/androiddev : des développeurs décrivent des rejets répétés liés aux Foreground Services, avec des demandes de clarification sans indication précise sur la partie à corriger (texte ou vidéo). Lien : https://www.reddit.com/r/androiddev/comments/1fsuii4/has_anyone_had_repeat_issues_with_app_submission/
  • Forum développeurs Zoom : rejet d’une mise à jour Play Store lié à des permissions Foreground Service, avec exigence de vidéo démonstrative jugée insuffamment explicite, sans guidance opérationnelle claire. Lien : https://devforum.zoom.us/t/app-update-rejected-due-to-foreground-service-permissions/103026
  • Support Google Play Console : retours de développeurs signalant des rejets pour « information insuffisante » concernant l’usage d’un Foreground Service, sans précision sur le critère exact manquant. Lien : https://support.google.com/googleplay/android-developer/thread/299748806

Pourquoi ce type de rejet est difficile à diagnostiquer

  • Absence de granularité : le message de rejet ne précise pas si la non-conformité concerne la description Play Console, la vidéo ou leur cohérence.
  • Évolution implicite des attentes reviewer : une justification jugée suffisante à un instant T peut être réévaluée différemment lors d’une mise à jour.
  • Critères implicites : Play attend souvent une démonstration encore plus explicite du triptyque user-initiated → perceptible → stoppable, ainsi que de la dépendance fonctionnelle immédiate.

Stratégie de résolution : rendre la justification non équivoque

Face à un rejet générique, la seule approche robuste consiste à supprimer toute ambiguïté d’interprétation.

  • Texte Play Console : formuler la justification comme un test vérifiable : « si l’utilisateur appuie sur STOP, la session est interrompue immédiatement et l’extension perd l’accès au NFC HSM ».
  • Vidéo : montrer sans coupe l’enchaînement action utilisateur → notification visible → STOP → perte immédiate de session côté extension.
  • Alignement sémantique : reprendre explicitement les termes utilisés par Google Play : core feature, user benefit, perceptible, stoppable, cannot be deferred.
  • Élimination des malentendus : rappeler explicitement « pas un VPN, pas un proxy, pas de routage, périmètre strictement local ».

Ce retour d’expérience explique pourquoi ce dossier inclut une checklist d’implémentation, un mapping preuves ↔ exigences Google Play et un kit de preuves reproductible : lorsqu’un rejet est formulé de manière générique, la seule réponse efficace reste une démonstration qui ne laisse plus de place à l’interprétation.

Android 14+ — Service premier plan Android (FGS) : type déclaré et justification vérifiable

Exigence Android 14 : justification explicite et vérifiable

Exigence Android 14 : l’utilisation d’un service de premier plan impose la déclaration d’un type explicite et une justification fonctionnelle, perceptible et vérifiable, démontrant que la tâche ne peut pas être différée sans dégrader l’expérience utilisateur. Cette dépendance se vérifie immédiatement : STOP coupe la notification, coupe la session, et l’extension perd l’accès au NFC HSM dans la même seconde.

Type déclaré et dépendance fonctionnelle immédiate

  • Type déclaré : FOREGROUND_SERVICE_CONNECTED_DEVICE
  • Fonctionnalité cœur dépendante : Connexion PC (téléphone ↔ extension Chromium)
  • Justification : le téléphone agit comme passerelle active vers un dispositif NFC HSM utilisé depuis un ordinateur, sur initiative explicite de l’utilisateur.

Si le service de premier plan est arrêté (bouton STOP dans la notification ou désactivation de l’auto-login), la session Connexion PC est immédiatement interrompue et l’extension navigateur perd l’accès au NFC HSM. La tâche ne peut pas être différée par le système sans empêcher la fonctionnalité attendue.

Référence Android — Types de Foreground Services : https://developer.android.com/develop/background-work/services/fgs/service-types

Continuité de la doctrine sur Android 15

Continuité Android 15 : Android 15 renforce encore la discipline autour des services de premier plan (démarrage, usage, attentes de comportement) et la cohérence entre action utilisateur, durée d’exécution et finalité. Cette trajectoire confirme le principe « visible, stoppable, borné » et favorise les implémentations démontrables (notification explicite + STOP + dépendance fonctionnelle immédiate).

Référence : https://developer.android.com/about/versions/15/changes/foreground-services

Évolutions Android 16 (API level 36) : quotas, diagnostics et limites opérationnelles

Foreground services — changes (inclut Android 16 / API level 36) : https://developer.android.com/develop/background-work/services/fgs/changes

Cap Android 16 : Android 16 introduit un cadre renforcé de quotas, de limites d’exécution et de diagnostics, ce qui favorise les workflows courts, local-only et explicitement contrôlés plutôt que des sessions implicites ou prolongées. Référence (diagnostic) : https://developer.android.com/develop/background-work/services/fgs/troubleshooting

Android continue d’outiller le diagnostic et de resserrer les scénarios autorisés ; par conséquent, un workflow local-only, visible et stoppable reste la stratégie la plus robuste face aux durcissements successifs.

Précision de fonctionnement — application Android NFC Freemindtronic

Précision de fonctionnement : le service de premier plan est strictement événementiel. Le lancement de l’application ne suffit pas à l’activer : il démarre uniquement lorsqu’un tag NFC est présenté, puis reste inactif en l’absence d’événement NFC, sans serveur local ni service persistant.

Impact produit et mitigation (Android 15/16, NFC, BAL et spécificités OEM)

Symptôme

  • Symptôme : le tag NFC est correctement détecté par le système, mais la tentative de relance ou de remise au premier plan de l’interface via PendingIntent est bloquée par le mécanisme BAL (Background Activity Launch). L’utilisateur perçoit une absence de réaction, ou un comportement dégradé, alors que l’événement NFC est bien reçu.

Cause

  • Cause : Android 15 et plus encore Android 16 durcissent officiellement les règles de lancement d’activités depuis l’arrière-plan. Les PendingIntent créés par l’application ne bénéficient plus implicitement du droit de lancer ou de ramener une activité au premier plan. Ce durcissement impacte directement les parcours NFC historiques reposant sur la relance d’UI via PendingIntent, y compris lorsque l’activité cible est déjà en état RESUMED. Référence officielle Android : https://developer.android.com/guide/components/activities/background-starts
Schéma comparatif montrant le fonctionnement NFC avant Android 15 et le blocage Background Activity Launch (BAL) sur Android 15 et Android 16 empêchant la relance automatique de l’interface via PendingIntent
Avant Android 15, la détection d’un tag NFC pouvait relancer automatiquement l’interface utilisateur via PendingIntent. À partir d’Android 15 et Android 16, le mécanisme Background Activity Launch (BAL) bloque cette relance implicite, même lorsque l’événement NFC est correctement détecté.

Ce comportement est observable y compris sur Google Pixel (AOSP), confirmant qu’il s’agit d’un changement structurel de la plateforme et non d’une spécificité OEM.

Preuve technique — blocage BAL (Android 15 / 16)

Sur Android 15 et plus encore Android 16 (API level 36), le blocage du lancement d’activité depuis l’arrière-plan (Background Activity Launch) est un mécanisme structurel de la plateforme, observable directement dans les journaux système.

Extrait Logcat typique (anonymisé) lors d’un événement NFC tentant de relancer l’UI via PendingIntent :

Background activity launch blocked:
  pkg=com.freemindtronic.EviPro
  reason=background_activity_launch_not_allowed
  intent=Intent { act=android.nfc.action.TAG_DISCOVERED ... }
  callerApp=ProcessRecord{...}

Ce message confirme que :

  • l’événement NFC est bien reçu par le système,
  • la tentative de relance d’interface est explicitement bloquée par Android,
  • le refus est indépendant de l’application et résulte du durcissement BAL de la plateforme.

Cette preuve permet de distinguer clairement : changement structurel Androidbug applicatif.

  • Facteur aggravant NFC (plateforme) : en parallèle des restrictions BAL, des instabilités et changements de comportement de la pile NFC sont observés sur Android 15 et Android 16, incluant des crashs du service NFC (DeadObjectException), des échecs intermittents de lecture de tags et des différences de comportement entre versions. Ces points sont documentés dans l’Issue Tracker Google, notamment sur Android 16 : https://issuetracker.google.com/issues/456078994

Facteur aggravant NFC (OEM)

  • Facteur aggravant NFC (OEM) : la problématique est accentuée sur certains appareils en raison des surcouches constructeur et des politiques d’optimisation agressives. Des retours publics et tickets font état de comportements NFC dégradés ou incohérents sur :
    • Samsung Galaxy (One UI 7/8 – Android 15/16) : suspension agressive des activités, désactivation intermittente du NFC après mise à jour, et différences de comportement entre états écran allumé/éteint.
    • Xiaomi / Redmi / Poco (MIUI / HyperOS – Android 15/16) : restrictions fortes en arrière-plan, interactions entre NFC, Bluetooth et économie d’énergie, entraînant des échecs de scans NFC ou des non-relances d’UI.
    • OnePlus / Oppo (OxygenOS / ColorOS – Android 15/16) : gestion restrictive des tâches en arrière-plan et comportements variables du service NFC selon les builds.
    • Fairphone 5 (Android 15) : régressions signalées après mise à jour, avec reconnaissance incomplète ou retardée de certains tags NFC.
    • Google Pixel (Android 15/16 AOSP) : référence AOSP montrant que le blocage BAL est structurel même sans surcouche OEM, confirmant que le problème n’est pas uniquement constructeur.

Mitigation robuste

  • Mitigation robuste : abandonner toute dépendance à une relance implicite d’UI via PendingIntent. Le traitement NFC doit être effectué dans l’instance existante de l’activité lorsque celle-ci est déjà active (launchMode adapté, traitement via onNewIntent()), ou bien être poursuivi via une action explicitement initiée par l’utilisateur (notification avec action), conformément au modèle Android “user-initiated” recommandé pour Android 15+.

À retenir : à partir d’Android 15, la détection NFC peut fonctionner correctement sans que l’interface utilisateur ne soit relancée. Le blocage Background Activity Launch (BAL) empêche toute relance implicite via PendingIntent. Une implémentation conforme doit donc traiter l’événement dans l’instance existante ou exiger une action explicite de l’utilisateur.

Limites connues / comportements non garantis par Android

  • Android ne garantit pas la relance automatique d’une activité UI après un événement système (NFC, intent, PendingIntent), en particulier à partir d’Android 15 (BAL).
  • Le comportement exact de la pile NFC peut varier selon la version Android, l’état du système (écran éteint, Doze, restrictions OEM) et les implémentations constructeur.
  • La continuité d’une session dépend du respect du modèle user-initiated et du maintien du service de premier plan Android conformité Google Play (notification visible, STOP, durée bornée).

Ces limites sont structurelles à la plateforme Android et ne constituent ni un bug applicatif ni une déviation fonctionnelle.

Preuve et audit

  • Preuve et audit : les journaux système Android permettent d’identifier explicitement les blocages BAL (“Background activity launch blocked” ou messages équivalents) lors d’événements NFC. Ces logs constituent des preuves techniques objectives à archiver dans le kit de conformité interne et à produire en cas de revue Google Play ou d’audit sécurité.

Cette dépendance fonctionnelle démontrable constitue un point clé de service de premier plan Android conformité Google Play, tel qu’attendu par les reviewers depuis Android 14+.

Charge de compatibilité et impacts sur le cycle de mise à jour

Cette section explique pourquoi ces changements ne relèvent pas d’un simple ajustement de code, mais d’une transformation structurelle des workflows Android historiques.

Depuis Android 6, la plateforme a empilé des restrictions successives qui transforment une “simple montée de targetSdk” en refactoring structurel : durcissement de l’exécution en arrière-plan et du lancement d’activités depuis l’arrière-plan (BAL), encadrement des services de premier plan (FGS) et exigences de justification associées, ainsi que variabilité du comportement NFC et de la pile système selon les versions et les implémentations OEM. À partir d’Android 15, une application qui crée des PendingIntent ne bénéficie plus implicitement des privilèges BAL : l’opt-in explicite devient requis, ce qui casse de nombreux workflows historiques (notification → relance UI, flux “événement système → ramener l’activité”, scénarios NFC, etc.).

Dans le même temps, Android 15/16 impose des changements de comportement documentés (targetSdk, compat framework changes), et des tickets publics montrent aussi des instabilités NFC à la plateforme, ce qui augmente la complexité des tests multi-appareils, multiplie les modes dégradés, et ralentit mécaniquement les cycles de publication.

Références officielles (Android/Google) :

• Restrictions BAL (Android 15+), opt-in requis pour PendingIntent : https://developer.android.com/guide/components/activities/background-starts
• Android 15 — behavior changes (targeting API 35) : https://developer.android.com/about/versions/15/behavior-changes-15
• Android 15 — compat framework changes (BAL privileges rescind by creator) : https://developer.android.com/about/versions/15/reference/compat-framework-changes
• Android 16 — behavior changes (Android 16 / API level 36) : https://developer.android.com/about/versions/16/behavior-changes-16 

• Set up the Android 16 SDK (API 36) : https://developer.android.com/about/versions/16/setup-sdk
• Exigence Google Play target API level (cadence de migration imposée) : https://developer.android.com/google/play/requirements/target-sdk
• Android Developers Blog (Android 15 AOSP) — PendingIntent creators block BAL by default : https://android-developers.googleblog.com/2024/09/android-15-is-released-to-aosp.html

Retours développeurs & tickets publics (problèmes similaires) :

• StackOverflow (BAL hardening Android 15, activité bloquée via PendingIntent) : https://stackoverflow.com/questions/77679032/with-android-15-bal-hardening-this-activity-start-may-be-blocked-if-the-pi-creat
• GitHub (Flutter community — demande support opt-in BAL Android 15+, activité ne se lance plus) : https://github.com/fluttercommunity/plus_plugins/issues/3688
• Reddit (React Native — activity launch bloqué sur Android 15) : https://www.reddit.com/r/reactnative/comments/1k1zpk0/android_15_background_activity_launch_issue/
• Google Issue Tracker (NFC cassé Android 15 Beta 2) : https://issuetracker.google.com/issues/340933949
• Google Issue Tracker (NFC service dead / tentative recover) : https://issuetracker.google.com/issues/341807213
• Google Issue Tracker (Crash NFC DeadObjectException Android 16) : https://issuetracker.google.com/issues/456078994

[/col] [/row]

Fonction cœur : Connexion PC pour NFC HSM (extension Chromium)

Cette section décrit concrètement la fonctionnalité cœur qui justifie l’usage d’un service de premier plan, et pourquoi son interruption entraîne immédiatement une perte de capacité opérationnelle.

Session locale téléphone ↔ ordinateur : finalité et bornage

Concrètement, l’application Android maintient une session locale téléphone ↔ ordinateur afin que l’extension Chromium puisse émettre des requêtes explicitement autorisées vers le téléphone, dans le cadre strict des opérations NFC HSM définies par l’utilisateur.

Canal chiffré local : protocole à clé segmentée et clé unique par session

Ensuite, la session s’appuie sur un canal chiffré local reposant sur un protocole à clé segmentée, avec une clé unique par session, afin d’éviter toute réutilisation de secret et de renforcer la résilience aux interceptions réseau locales.

Point de terminaison HTTP local : port configurable et anti-ambiguïté (10001)

Pour ce faire, le service expose un point de terminaison HTTP local, associé à un port configurable (par défaut 10001). Ce point de terminaison reste exclusivement dédié à la Connexion PC : il ne s’agit ni d’un proxy, ni d’un tunnel réseau, ni d’un service généraliste.

Ce point de terminaison est strictement borné à la session (clé unique par session, durée limitée, arrêt immédiat via STOP) et n’a aucune vocation de relais réseau (ni proxy, ni tunnel, ni routage).

Déclenchement user-initiated : visible, stoppable, borné

Il est important de souligner que ce mécanisme n’est pas un démon « always-on » en arrière-plan. Au contraire, il s’agit d’une session explicitement perceptible, déclenchée par l’utilisateur, bornée dans le temps, et arrêtable à tout moment.

Point reviewer : le démarrage de la session Connexion PC est strictement user-initiated : sans action explicite de l’utilisateur (activation Connexion PC / usage attendu), aucun service de premier plan n’est maintenu.

Sa seule finalité consiste à permettre l’usage d’un NFC HSM sur ordinateur via navigateur, sans dépendance cloud et sans infrastructure externe.

Découverte locale : EviDNS Zeroconf (serverless)

Côté ordinateur, cette Connexion PC s’appuie sur la technologie EviDNS Zeroconf, ce qui permet aux extensions Freemindtronic de découvrir automatiquement le téléphone sur le réseau local, d’identifier son adresse IP et son port d’appairage, puis d’établir la session, le tout sans serveur DNS/DHCP dédié et sans exposition hors du périmètre local.

Schéma illustrant le scénario sécurisé de Connexion PC Freemindtronic : extension Chromium, service de premier plan Android, canal chiffré local par protocole à clé segmentée avec clé unique par session, et usage NFC HSM sans serveur externe.

Scénario sécurisé Freemindtronic — Une requête initiée depuis l’extension Chromium déclenche l’interaction NFC HSM côté téléphone Android. Le secret est lu localement et transmis via un canal chiffré local basé sur un protocole à clé segmentée avec clé unique par session. Aucun serveur externe n’intervient à aucun moment.

Dépendance fonctionnelle démontrable

La fonctionnalité Connexion PC chiffré de bout en bout repose sur une session continue, visible et maîtrisée sur le téléphone Android. Dès que le service de premier plan est interrompu (STOP ou désactivation), l’extension navigateur perd immédiatement la session, rendant l’usage des NFC HSM sur ordinateur indisponible.

EviDNS Zeroconf : appairage local serverless pour extensions desktop

La technologie EviDNS Zeroconf (serverless) est conçue pour simplifier et sécuriser la configuration réseau en environnement local : elle facilite la découverte de services et l’association entre un ordinateur et un terminal NFC (téléphone) sur le même réseau.

Concrètement, EviDNS permet aux extensions desktop de trouver le téléphone et d’identifier les paramètres nécessaires à la Connexion PC (IP + port). Cette approche améliore la robustesse multi-OS et évite de dépendre d’une infrastructure externe.

  • Serverless : aucune dépendance à un serveur DNS/DHCP dédié pour l’appairage local.
  • Découverte automatique : identification du terminal NFC sur le réseau local et récupération IP/port pour la session.
  • Alignement souverain : l’appairage reste dans le périmètre local de l’utilisateur, sans obligation de cloud pour “tenir” la connexion.
EviDNS Serverless Technology How it work ZeroConf DNS-SD mDNS by Freemindtronic Andorra
EviDNS Serverless Technology How it work ZeroConf DNS-SD mDNS by Freemindtronic Andorra

Point clé

Côté ordinateur, les extensions Freemindtronic s’appuient sur la technologie EviDNS Zeroconf pour découvrir automatiquement le téléphone sur le réseau local et obtenir son adresse IP et son port d’appairage — sans serveur DNS/DHCP dédié.

Service premier plan Android : contrôles utilisateur (notification, STOP, réglages)

Un service de premier plan est défendable lorsque le contrôle utilisateur est explicite, constant et vérifiable, aussi bien pour l’utilisateur final que pour un auditeur ou un reviewer.

L’auto-connexion peut être activée par défaut afin d’offrir une expérience fluide. Toutefois, elle reste totalement réversible : arrêt immédiat via le bouton STOP dans la notification, et désactivation de l’auto-login (switch avec pictogramme Wi-Fi) dans les paramètres « Extension Freemindtronic ».

Notification Foreground Service : STOP immédiat (Freemindtronic Connexion PC NFC HSM)

La Connexion PC s’appuie sur quatre contrôles concrets qu’un auditeur peut valider en quelques secondes :

Contrôle Où il apparaît Ce que cela démontre
Notification persistante Centre de notifications Android Session visible ; aucune activité cachée
Action STOP Bouton dans la notification Arrêt immédiat à la demande (stoppable)
Auto-connexion configurable Paramètres de l’extension (Auto-login + pictogramme Wi-Fi) « Actif par défaut » ≠ « imposé » ; désactivation simple
Port local configurable Paramètres de l’application (défaut 10001) Transparence opérationnelle ; périmètre prévisible

Note importante : lorsque l’utilisateur appuie sur STOP, la notification de service de premier plan et la session associée sont interrompues immédiatement. Par conception, aucun état résiduel n’est maintenu à l’écran, ce qui rend impossible la capture d’un « écran après STOP ». Cette disparition immédiate constitue précisément la preuve du caractère stoppable et non persistant du service.

Cas limite (Android 13+) : si l’utilisateur refuse l’autorisation POST_NOTIFICATIONS, la session ne peut plus être pleinement “perceptible”. Par cohérence avec les exigences Google Play, le parcours doit soit guider l’utilisateur pour réactiver les notifications, soit empêcher l’activation d’une session Connexion PC non visible.

Moindre privilège : autorisations granulaires

Beaucoup d’applications considèrent une session persistante comme une capacité sans limites. Freemindtronic adopte l’approche inverse.

Écran Paramètres Utilisateur Freemindtronic affichant Extension Freemindtronic avec AutoLogin activable, port de communication 10001 et autorisations de requêtes pour Connexion PC NFC HSM

La Connexion PC intègre une autorisation granulaire par catégories de requêtes, permettant à l’utilisateur de décider explicitement ce que l’extension a le droit de demander pendant une session active.

Paramètre (exemple) Objet Rationale sécurité
isLogIn (identifiants) Autoriser les requêtes d’identifiants Réduit l’exposition si non nécessaire au workflow
isLogWeb (web) Autoriser les requêtes web Sépare navigation et gestion de secrets
isLogCard (cartes) Autoriser les requêtes cartes Garde sous contrôle une catégorie à forte valeur
isLogCryptoMain / isLogCrypto (crypto) Autoriser les requêtes cryptomonnaies Réduit la surface de risque pour les actifs
isLogBip39 (seed) Autoriser les requêtes BIP39 / seed Garde un verrou explicite sur la classe la plus sensible
isLogCipher (clés) Autoriser les requêtes de clés de chiffrement Segmente la manipulation des clés
isLogPing (connexion) Autoriser les pings Contrôle et diagnostic transparents

Autrement dit : le service de premier plan ne signifie pas « accès étendu ». Il fournit une frontière de session, et l’utilisateur contrôle ce qui peut se produire à l’intérieur de cette frontière.

Preuve clé : contrôle utilisateur total et granulaire (données, alertes, port, arrêt)

Un point décisif l’utilisateur ne subit pas le service de premier plan. Il le contrôle entièrement : notification persistante, arrêt instantané, désactivation dans les paramètres, et autorisation granulaire par type de données.

Actif par défaut, mais jamais imposé

Le service d’auto-connexion peut être actif par défaut à l’installation afin d’assurer une disponibilité immédiate de la Connexion PC. Ce choix d’ergonomie est encadré par des mécanismes d’arrêt et de désactivation accessibles en un geste, ce qui répond au principe : “actif par défaut ≠ permanent ≠ incontrôlable”.

Preuve observable Ce que cela démontre
Notification persistante “Service d’auto-connexion active” Téléphone (barre d’état Android) Session perceptible ; transparence
Bouton STOP (action d’arrêt) Notification Android Arrêt immédiat par l’utilisateur (stoppable)
Switch “Auto-login” (picto Wi-Fi) Paramètres utilisateur > “Extension Freemindtronic” Désactivation simple du démarrage automatique
Port HTTP configurable (défaut 10001) Paramètres de service Périmètre local explicite ; diagnostic clair
Nom du téléphone personnalisable Paramètres d’appairage Traçabilité locale et maîtrise de l’association

Moindre privilège appliqué au niveau des données

L’un des points les plus rares sur le marché est la capacité à limiter la Connexion PC au strict nécessaire en contrôlant
individuellement chaque type de requête autorisée entre l’extension navigateur et le téléphone.
Cela transforme une session persistante en session bornée par l’utilisateur.

Paramètre Type de données / usage Contrôle
isLogIn Requêtes d’identifiants ON / OFF
isLogWeb Requêtes via extension web ON / OFF
isLogInAdd Ajout de nouveaux comptes ON / OFF
isLogCard Requêtes cartes de crédit ON / OFF
isLogWebCard Cartes via extension web ON / OFF
isLogCryptoMain Requêtes cryptomonnaies ON / OFF
isLogCrypto Données crypto détaillées ON / OFF
isLogIOTA Informations IOTA ON / OFF
isLogBank Requêtes comptes bancaires ON / OFF
isLogBip39 Seed phrases BIP39 ON / OFF
isLogPhone Numéros de téléphone ON / OFF
isLogNote Notes sécurisées ON / OFF
isLogCipher Clés de chiffrement (AES) ON / OFF
isLogCloud Données cloud (si applicable) ON / OFF
isLogPing Ping de connexion ON / OFF

Contrôle des alertes : notifications, vibration, sonnerie

L’utilisateur peut également configurer la manière dont la session est signalée, ce qui renforce la perceptibilité sans imposer une expérience intrusive.

Paramètre Fonction
isLogPingNotification Notification lors d’un ping
isLogVibrate Vibration lors des requêtes
isLogRing Sonnerie lors des requêtes

Pourquoi c’est structurant : un service de premier plan conforme n’est pas seulement “visible”.
Il doit être arrêtable, désactivable, et idéalement borné en droits.
Ici, l’utilisateur garde la main sur la session et sur chaque classe de données exposée à l’extension.

À retenir : le service de premier plan ne confère aucun accès étendu par défaut. Il matérialise une frontière de session visible et stoppable, à l’intérieur de laquelle chaque catégorie de données reste explicitement contrôlée par l’utilisateur. Cette approche combine visibilité, contrôle utilisateur et réduction mesurable de la surface d’attaque, notamment via l’absence de saisie clavier et le verrouillage des captures d’écran.

Portée locale : ni proxy, ni VPN, ni routage

« Session locale » n’est pas un argument marketing. C’est un engagement d’architecture mesurable et vérifiable.

L’illustration ci-dessous montre un point clé de cette transparence : le port de communication utilisé pour l’échange entre le téléphone Android et l’extension navigateur Freemindtronic est explicitement configurable par l’utilisateur (10001 par défaut).

Illustration montrant un service de premier plan Android où l’utilisateur peut modifier le port de communication (10001 par défaut) utilisé pour l’échange local entre un téléphone Android et une extension navigateur Chromium Freemindtronic pour l’usage d’un NFC HSM

Ce choix volontaire permet à l’utilisateur, à un auditeur ou à un reviewer Google Play de vérifier immédiatement que la Connexion PC repose sur un périmètre réseau borné, local et non ambigu. Il démontre que le service de premier plan ne masque aucun comportement de tunnel, de relais générique ou de redirection réseau implicite.

La Connexion PC est conçue pour réduire strictement le périmètre opérationnel :

  • Pas de proxy : l’application n’est pas un proxy HTTP/SOCKS généraliste et ne relaie pas des flux tiers.
  • Pas de VPN : elle ne crée aucun tunnel réseau, n’intercepte pas la navigation et n’implémente pas de VpnService.
  • Pas de routage : la fonctionnalité ne redirige pas de trafic distant et ne sert pas de passerelle réseau.
  • Port explicite et configurable : le port d’échange (10001 par défaut) est visible, modifiable et limité à la Connexion PC.
  • Pas de dépendance cloud : aucun serveur externe n’est requis pour maintenir la session.

Ce bornage réseau explicite s’inscrit dans le modèle souverain Freemindtronic : pas de compte, pas d’identification, pas de base centrale. Les échanges restent confinés au réseau local de l’utilisateur, et les secrets demeurent sous contrôle utilisateur, protégés par les dispositifs NFC HSM.

À retenir : la possibilité de modifier le port n’est pas un détail d’implémentation. C’est une preuve que la Connexion PC ne fonctionne ni comme un proxy, ni comme un VPN, mais comme une session locale, visible et auditabile, rendue possible par un service de premier plan Android strictement borné.

Ce que la Connexion PC ne fait pas

  • Ne collecte pas de données utilisateur pour analyse ou profilage.
  • Ne transfère pas les secrets vers un serveur distant : la session est conçue pour rester local-only.
  • Ne fonctionne pas comme un proxy/VPN : aucune interception générale de trafic.
  • Ne reste pas actif “en cachette” : la notification et STOP rendent l’état observable.

Transformer la conformité en avantage concurrentiel

Au-delà du minimum attendu, la Connexion PC applique le moindre privilège au niveau des données via des permissions granulaires par catégorie — une exigence rarement implémentée dans les solutions concurrentes. Les règles des stores obligent désormais les applications de sécurité à documenter et à démontrer leur fonctionnement. Ce n’est pas qu’une formalité : c’est un filtre de maturité.
À terme, les solutions incapables d’expliquer une activité persistante de manière vérifiable s’exposent à :

  • des refus de publication et des cycles de revue prolongés,
  • des restrictions au niveau du système d’exploitation,
  • une érosion de la confiance liée à l’opacité,
  • un renforcement de la pression réglementaire sur les usages sensibles.

L’implémentation Freemindtronic rend le service de premier plan mesurable : session visible, arrêt immédiat, auto-login configurable, périmètre local strict.
Cette clarté opérationnelle correspond aux attentes des environnements à forte assurance, et devient un différenciateur quand d’autres solutions reposent sur des comportements flous en arrière-plan.

Approche Visible (notification) Arrêt immédiat Granularité par type de données Portée locale Dépendance cloud
Freemindtronic (Connexion PC) Oui Oui (STOP + désactivation auto-login) Oui (par catégorie) Oui (local-only) Non
Approche “background” (générique) Souvent non Souvent non Rarement Variable Souvent oui
Approche “cloud-first” Variable Variable Variable Non (dépend réseau) Oui

Transparence vérifiable : téléchargements, signatures, historique des versions

Un marqueur de confiance ne se limite pas à “dire” : il doit permettre de vérifier. Freemindtronic publie des ressources qui facilitent l’audit et la traçabilité logicielle dans le temps.

Ressource Ce que cela apporte Lien
Téléchargements officiels Accès direct aux logiciels, informations de version, empreintes (MD5/SHA256 selon les pages) : transparence et vérification reproductible https://freemindtronic.com/support/download/
Historique des versions Traçabilité des évolutions dans le temps (audit interne, conformité, justification des changements) https://freemindtronic.com/version-history-of-software-freemindtronic-andorra/
Guides techniques (FAQ) Procédures, repères IP/port, explications d’architecture (support et audit) https://freemindtronic.com/support/faq-technical-guides/

Cette transparence documentée renforce la crédibilité d’une architecture “local-only” et la capacité à répondre aux exigences de conformité sans dépendre d’un cloud opaque.

Checklist d’implémentation pour auditeurs

Les points suivants sont vérifiables rapidement par un reviewer, un auditeur ou une équipe sécurité.
Cette checklist sert aussi de guide pratique à toute solution qui doit justifier un service de premier plan dans un contexte sensible.

  • Visible : notification persistante indiquant la session active.
  • Arrêtable : action STOP accessible directement depuis la notification.
  • Configurable : auto-connexion désactivable dans les paramètres utilisateur (extension : Auto-login).
  • Durée minimale : service actif uniquement durant la session Connexion PC.
  • Périmètre borné : communication locale ; aucun comportement proxy/VPN/routage.
  • Moindre privilège : autorisations granulaires par catégories.
  • Transparence opérationnelle : port configurable ; comportement déterministe.

Kit de preuves (review Google Play / audit interne)

Pour éviter les allers-retours, voici les preuves minimales à fournir dans une revue :

  • Capture 1 : notification persistante “Service d’auto-connexion active”.
  • Capture 2 : bouton STOP visible dans la notification.
  • Capture 3 : paramètre “Extension Freemindtronic” avec switch Auto-login + pictogramme Wi-Fi.
  • Capture 4 : écran du port (défaut 10001) + nom du téléphone (appairage).
  • Capture 5 : exemple de contrôle granulaire (au moins 5 catégories ON/OFF).

Ce kit de preuves est conçu pour répondre explicitement aux attentes d’un Google Play reviewer foreground service, en fournissant des éléments observables, reproductibles et directement alignés sur les exigences officielles.

Ce que Google Play peut vérifier sans analyser le code

  • Présence d’une notification persistante lors de l’usage Connexion PC
  • Arrêt immédiat du service via STOP (sans état résiduel)
  • Perte instantanée de session côté extension navigateur
  • Absence de déclaration VpnService
  • Port local explicite (10001 par défaut, configurable)

Ces éléments suffisent à établir la conformité FGS sans inspection du code source.

Ce que l’auditeur ne verra PAS

  • Pas de code source à analyser pour comprendre le comportement.
  • Pas de serveur distant, pas de cloud, pas d’API tierce impliquée.
  • Pas de tunnel réseau, pas de VPN, pas de proxy implicite.
  • Pas d’activité persistante invisible après STOP.
  • Aucune capture d’écran possible sur les écrans sensibles en version de production (verrouillage système des screenshots).
  • Aucune saisie clavier lors de l’utilisation de la Connexion PC (téléphone et ordinateur), rendant les keyloggers inopérants.

Plan vidéo (60–90 s) : activer Connexion PC → montrer notification → STOP → relancer → désactiver Auto-login → constater absence de redémarrage → montrer port 10001 → démontrer perte de session côté extension quand STOP.

Service premier plan Android : mapping preuves ↔ exigences Google Play (reviewer)

Exigence Google Play Preuve fournie Ce que le reviewer vérifie
Fonctionnalité cœur bénéfique Démonstration “Connexion PC” (extension ↔ téléphone) Le service est indispensable au workflow principal
Perceptible à tout moment Notification persistante Aucune exécution “cachée”
Arrêtable à la demande Bouton STOP dans la notification Arrêt immédiat sans friction
Ne peut pas être différé sans casse UX Perte immédiate de session côté extension quand STOP Dépendance fonctionnelle démontrable
Durée minimale / bornée Service actif uniquement durant la session Connexion PC Pas de persistance hors besoin

Audit rapide : vérifier un Service premier plan Android et la portée local-only (2 minutes)

Cette procédure permet à un auditeur (ou à un reviewer) de vérifier rapidement : visibilité, arrêt immédiat, et caractère local-only.

  1. Vérifier la perceptibilité : activer la Connexion PC, puis ouvrir le centre de notifications Android et confirmer la présence de la notification persistante.
  2. Vérifier l’arrêt : cliquer sur STOP dans la notification ; confirmer que la session s’arrête immédiatement.
  3. Vérifier la désactivation : dans les paramètres “Extension Freemindtronic”, désactiver l’auto-login (switch + pictogramme Wi-Fi), puis confirmer l’absence de relance automatique.
  4. Vérifier la dépendance fonctionnelle : constater que l’extension navigateur perd la session quand le service s’arrête.
  5. Vérifier la portée locale : confirmer que le port (défaut 10001) est un paramètre local et que la session n’implique pas de service cloud pour fonctionner.

Astuce : côté extension, la découverte automatique du téléphone (IP + port) peut s’appuyer sur EviDNS Zeroconf (serverless), ce qui facilite l’appairage local sans infrastructure dédiée.
Références : https://freemindtronic.com/technology/evidns-zeroconf-serverless-technology/ et https://freemindtronic.com/support/faq-technical-guides/

Cas d’usage souverain : transparence et continuité opérationnelle

Dans les environnements souverains ou à forte contrainte, le pire scénario n’est pas seulement l’incident : c’est l’impasse opérationnelle provoquée par un outil opaque.
Une fonctionnalité qui dépend silencieusement de l’arrière-plan peut être restreinte par l’OS, puis échouer au moment critique.

En concevant la Connexion PC autour d’un service de premier plan visible, stoppable, configurable et strictement local, l’utilisateur peut prouver — en temps réel — ce qui s’exécute et pourquoi.
Cette transparence rend le système plus résilient face au durcissement des politiques, et réduit le risque d’incompatibilité de dernière minute lors d’un déploiement sensible.

Enfin, lorsqu’un scénario comparable implique des tentatives d’exfiltration, une approche souveraine fondée sur le matériel borne les impacts : si les secrets restent confinés aux dispositifs NFC HSM et que les opérations demeurent explicitement médiées par l’utilisateur, les données récupérées hors contexte restent inexploitables en clair.

Note : la Connexion PC ne dépend ni de Play Integrity API, ni de SafetyNet pour fonctionner. La conformité repose sur des mécanismes observables (notification, STOP, périmètre local), et non sur une attestation distante ou opaque.

Glossaire

Type de service de premier plan (FGS type)

Foreground service type API 34+

Un FGS type qualifie explicitement la nature d’un service de premier plan Android afin que le système, et donc Google Play, comprenne pourquoi l’application exécute une tâche visible. Par conséquent, Android 14+ vous impose de déclarer un type adapté à chaque service, puis, lorsque c’est requis, de déclarer aussi la permission FGS associée. Ainsi, vous transformez une contrainte technique en preuve de conformité et en marqueur de confiance pour l’audit. Mots-clés : Android 14 foreground service type, API 34 FGS types required, Play Console FGS declaration.
Déclaration Foreground Service dans Play Console

FGS declaration + vidéo reviewer

La déclaration FGS dans Play Console structure la revue Google Play lorsque l’app cible Android 14+. D’abord, vous décrivez la fonctionnalité qui utilise le FGS. Ensuite, vous expliquez l’impact si le système diffère la tâche ou si le système interrompt la tâche. Enfin, vous joignez un lien vidéo montrant comment l’utilisateur déclenche la fonctionnalité, ce qui rend la justification vérifiable. Mots-clés : Google Play foreground service requirements, video demonstration foreground service, reviewer evidence pack.
Permission Foreground Service

FOREGROUND_SERVICE_* permissions

Une permission Foreground Service encadre certains types de services de premier plan. Autrement dit, vous ne vous contentez plus d’afficher une notification, puisque vous alignez aussi le manifeste sur la finalité réelle du service. De plus, cette granularité aide les auditeurs à vérifier que l’app ne “sur-déclare” pas des capacités. Mots-clés : FOREGROUND_SERVICE permission Android, manifest permission API 34, least privilege Android service.

Notification de service de premier plan

Notification persistante + contrôle immédiat

Une notification de service de premier plan rend la session perceptible et donc auditable par l’utilisateur. Par conséquent, elle matérialise l’exécution en cours, puis elle expose un contrôle immédiat (STOP) qui prouve que la tâche reste stoppable. Ensuite, ce signal visible répond directement à la logique Google Play “pas d’activité cachée”. Mots-clés : notification foreground service, service de premier plan visible, stop foreground service.
POST_NOTIFICATIONS

Permission notifications Android 13+

La permission POST_NOTIFICATIONS encadre l’affichage des notifications sur Android 13+. Ainsi, si l’utilisateur refuse les notifications, l’app doit rester cohérente avec le principe “perceptible”, soit en guidant l’utilisateur, soit en adaptant le parcours pour éviter une session non visible. Par conséquent, ce point renforce la robustesse “store-ready” d’un workflow FGS. Mots-clés : Android 13 notification permission, foreground service notification blocked, perceptible to user.
shortService / systemExempted

Exceptions FGS (cas particuliers)

Google Play mentionne des exceptions comme shortService et systemExempted, toutefois elles ne s’appliquent pas aux usages classiques de session persistante. Par conséquent, une app de sécurité gagne à expliquer qu’elle reste dans le cadre normal : fonction cœur, notification, STOP, et durée minimale. Mots-clés : short foreground service, systemExempted foreground service, foreground service policy. Référence : https://support.google.com/googleplay/android-developer/answer/13392821

Dépendance fonctionnelle démontrable

Test immédiat (preuve STOP)

FAQ : Service premier plan Android (Foreground Service)

Pourquoi faut-il déclarer le FGS dans Play Console, et pas seulement dans le manifeste ?

Exigences reviewer Google Play : description, impacts, vidéo

Parce que Play Console ne vérifie pas seulement votre code, puisqu’il vérifie aussi votre justification utilisateur. Ainsi, pour chaque type de service déclaré, vous décrivez la fonctionnalité, puis vous expliquez ce qui se passe si la tâche est différée ou interrompue. Enfin, vous fournissez une vidéo qui montre l’action utilisateur qui déclenche la Connexion PC. Par conséquent, vous réduisez les allers-retours reviewer et vous rendez votre FGS auditable. Référence : https://support.google.com/googleplay/android-developer/answer/13392821
Pourquoi choisir CONNECTED_DEVICE, et pas REMOTE_MESSAGING, pour la Connexion PC ?

Justification de type : NFC HSM + passerelle locale

Parce que la Connexion PC ne se limite pas à “relayer des messages”, puisqu’elle maintient une session locale qui sert un usage matériel : l’accès à un NFC HSM depuis un poste desktop via extension Chromium. Ainsi, le téléphone agit comme passerelle active vers un dispositif et vers un flux local borné. De plus, STOP coupe immédiatement la session, donc vous prouvez la dépendance fonctionnelle sans persistance implicite. Mots-clés : TYPE_CONNECTED_DEVICE NFC, foreground service connected device use case, local-only phone to browser bridge. Référence : https://support.google.com/googleplay/android-developer/answer/13392821
Le service de premier plan transforme-t-il l’application en proxy, en VPN ou en relais réseau ?

Non : périmètre local-only, et contrôle utilisateur

Non, puisque la Connexion PC n’implémente ni proxy, ni VPN, ni routage. Au contraire, elle maintient une session local-only strictement bornée, puis elle l’expose de manière visible via notification. Ensuite, l’utilisateur arrête la session instantanément via STOP, et donc l’extension perd l’accès au NFC HSM immédiatement. Mots-clés : no VPNService, no proxy Android, local-only foreground service security.
Que change Android 15 pour les Foreground Services dans un workflow sécurité ?

Durée, cohérence action utilisateur, STOP immédiat

Android 15 renforce le cadre des Foreground Services, et donc il favorise les implémentations qui démarrent sur action utilisateur, restent visibles, puis s’arrêtent immédiatement à la demande. Par conséquent, une session courte, local-only, et stoppable devient plus robuste qu’une persistance implicite. Référence : https://developer.android.com/about/versions/15/changes/foreground-services
Si Android refuse ou coupe le service, comment diagnostiquer sans “bricoler” l’arrière-plan ?

Troubleshooting FGS : comprendre les refus et corriger proprement

D’abord, vous vérifiez que le type FGS, la permission associée, et le scénario de démarrage sont cohérents. Ensuite, vous utilisez les points de diagnostic officiels Foreground Services afin d’identifier les erreurs “not allowed” et les limites opérationnelles. Ainsi, vous corrigez la cause, plutôt que de contourner le cadre. Référence : https://developer.android.com/develop/background-work/services/fgs/troubleshooting

Que doit montrer la vidéo Play Console pour valider un Foreground Service ?

Déclenchement utilisateur, notification, STOP, impact immédiat

D’abord, vous montrez l’action utilisateur qui déclenche la fonctionnalité cœur (Connexion PC). Ensuite, vous affichez la notification persistante qui prouve la perceptibilité. Puis, vous cliquez sur STOP afin de démontrer l’arrêt immédiat. Enfin, vous affichez l’impact fonctionnel : l’extension perd la session dès que le service s’arrête, ce qui prouve que la tâche ne peut pas être différée sans casser l’expérience attendue. Référence : https://support.google.com/googleplay/android-developer/answer/13392821
Si l’utilisateur bloque les notifications, la session Connexion PC reste-t-elle conforme ?

Perceptible signifie aussi “pilotable”

Non, puisque Google Play attend une exécution perceptible. Donc, si l’utilisateur bloque les notifications (Android 13+), vous devez rester cohérent : soit vous guidez l’utilisateur pour réautoriser l’affichage, soit vous adaptez le parcours afin d’éviter une session active non visible. Ainsi, vous maintenez la logique “visible, stoppable, borné”, et vous réduisez les incompréhensions reviewer. Mots-clés : notification blocked foreground service, Android 13 POST_NOTIFICATIONS, perceptible to user. Référence : https://support.google.com/googleplay/android-developer/answer/13392821
Pourquoi Google insiste sur “user-initiated” pour un Foreground Service ?

La session démarre parce que l’utilisateur la veut

Parce qu’un Foreground Service n’a pas vocation à “tourner”, il doit servir une fonctionnalité cœur que l’utilisateur déclenche et comprend. Par conséquent, vous liez le démarrage à une action explicite (Connexion PC), puis vous rendez l’état observable (notification), et enfin vous donnez un arrêt instantané (STOP). Ainsi, vous démontrez une intention utilisateur constante, et vous évitez l’interprétation “activité persistante déguisée”. Référence : https://support.google.com/googleplay/android-developer/answer/13392821
Si Android refuse le démarrage du service (Start not allowed), que faire sans contourner l’arrière-plan ?

Diagnostiquer proprement, puis corriger type, permission, scénario

D’abord, vous vérifiez la cohérence entre type FGS, permission associée, et scénario de démarrage (action utilisateur). Ensuite, vous consultez le diagnostic officiel Foreground Services, car il explique les causes typiques des refus “not allowed” et les corrections attendues. Enfin, vous corrigez la cause au lieu de bricoler l’arrière-plan, ce qui renforce la conformité Play. Référence : https://developer.android.com/develop/background-work/services/fgs/troubleshooting
Qu’est-ce qu’un service de premier plan sur Android ?

Définition officielle et rôle de sécurité

Un service de premier plan Android (Foreground Service) est un composant conçu pour exécuter une tâche que l’utilisateur doit voir, comprendre et pouvoir arrêter. Il s’accompagne obligatoirement d’une notification persistante indiquant l’activité en cours. Ce modèle vise à empêcher toute exécution sensible cachée en arrière-plan et constitue aujourd’hui un marqueur de transparence et de sécurité.

Référence officielle : https://developer.android.com/develop/background-work/services/foreground-services

Comment démarrer un service de premier plan sur Android ?

Démarrage user-initiated et notification immédiate

Un service de premier plan doit être démarré dans un scénario strictement user-initiated. L’utilisateur déclenche une fonctionnalité cœur (par exemple la Connexion PC), puis l’application démarre le service et affiche immédiatement la notification persistante. Depuis Android 14+, l’application doit également déclarer un type de service cohérent et, lorsque requis, la permission associée.

Référence officielle : https://developer.android.com/develop/background-work/services/fgs/declare

Pourquoi un service de premier plan doit-il afficher une notification ?

Perceptibilité, contrôle utilisateur et auditabilité

La notification n’est pas un détail d’interface : elle est le mécanisme central de contrôle utilisateur. Elle rend la tâche perceptible, permet un arrêt immédiat (ex. bouton STOP) et empêche toute activité invisible. Pour Google Play et Android, une tâche sensible sans notification est assimilée à une exécution cachée, donc non conforme.

Référence officielle : https://support.google.com/googleplay/android-developer/answer/13392821

Comment supprimer les notifications de service de premier plan sur Android ?

Arrêter le service plutôt que masquer l’état

Il n’est pas conforme de masquer durablement la notification d’un service de premier plan tant que celui-ci est actif. La seule manière correcte de faire disparaître la notification est d’arrêter le service. Si l’utilisateur bloque les notifications au niveau système (Android 13+), l’application doit éviter de maintenir une session non perceptible ou guider l’utilisateur pour rétablir l’affichage.

Référence officielle : https://developer.android.com/develop/background-work/services/foreground-services

À relier avec…