[GH-ISSUE #6] Implement HTTP/HTTPS OsmAnd transport and manual location sending #4

Open
opened 2026-10-23 18:09:14 +02:00 by jayanezj · 0 comments
Owner

Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/6

Goal

Send one explicitly requested position to the configured OsmAnd receiver without enabling continuous tracking.

Scope

  • Use URLSession with form POST encoding following the official client: device identifier, original timestamp in epoch seconds, available coordinates and optional accuracy, altitude, speed, bearing, battery and charging values.
  • Match official OsmAnd speed encoding in knots; do not invent missing fields or send invalid unavailable optional measurements.
  • Support HTTP/HTTPS, IP/domain, custom ports and paths without assuming a related web/API URL or controlling server infrastructure.
  • Verify certificates for HTTPS. Obtain explicit acknowledgement before the first HTTP transmission for a destination and again after relevant destination/security changes. Do not downgrade TLS errors or redirect HTTPS silently to HTTP.
  • Keep manual sending separate from the background queue. Report failure rather than marking a point accepted or silently draining old positions. Follow the official direct-send path without automatic delayed manual retries.

Acceptance criteria

  • The local receiver observes correct field encoding, units and timestamps, including absent optional fields.
  • HTTP 2xx means accepted by the receiver; non-2xx/network/TLS/timeout failures remain failures.
  • A manual send preserves the prior continuous-tracking state and works while paused after explicit permission/HTTP acknowledgement when needed.
  • Saving Settings or opening the app never triggers a send.
  • Redirect handling does not disclose payloads to an unapproved destination or bypass the configured transport policy.

Validation

Run synthetic local transport tests and a native one-shot acquisition smoke check without automatically transmitting real coordinates. A real external receiver test requires separate authorization.

Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.

References

Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.

Dependencies

Originally created by @jayanezj on GitHub (Oct 23, 2026). Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/6 ## Goal Send one explicitly requested position to the configured OsmAnd receiver without enabling continuous tracking. ## Scope - Use URLSession with form POST encoding following the official client: device identifier, original timestamp in epoch seconds, available coordinates and optional accuracy, altitude, speed, bearing, battery and charging values. - Match official OsmAnd speed encoding in knots; do not invent missing fields or send invalid unavailable optional measurements. - Support HTTP/HTTPS, IP/domain, custom ports and paths without assuming a related web/API URL or controlling server infrastructure. - Verify certificates for HTTPS. Obtain explicit acknowledgement before the first HTTP transmission for a destination and again after relevant destination/security changes. Do not downgrade TLS errors or redirect HTTPS silently to HTTP. - Keep manual sending separate from the background queue. Report failure rather than marking a point accepted or silently draining old positions. Follow the official direct-send path without automatic delayed manual retries. ## Acceptance criteria - [ ] The local receiver observes correct field encoding, units and timestamps, including absent optional fields. - [ ] HTTP 2xx means accepted by the receiver; non-2xx/network/TLS/timeout failures remain failures. - [ ] A manual send preserves the prior continuous-tracking state and works while paused after explicit permission/HTTP acknowledgement when needed. - [ ] Saving Settings or opening the app never triggers a send. - [ ] Redirect handling does not disclose payloads to an unapproved destination or bypass the configured transport policy. ## Validation Run synthetic local transport tests and a native one-shot acquisition smoke check without automatically transmitting real coordinates. A real external receiver test requires separate authorization. Add or extend this feature's meaningful deterministic tests in the CI workflow from [PROTO-002](https://github.com/jayanezj/traccar-client-macos/issues/2) as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual. ## References Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS. - [Official source 1](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/HttpUploader.kt) - [Official source 2](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/Tracker.kt) ## Dependencies - [PROTO-003](https://github.com/jayanezj/traccar-client-macos/issues/3) - [PROTO-004](https://github.com/jayanezj/traccar-client-macos/issues/4) - [PROTO-005](https://github.com/jayanezj/traccar-client-macos/issues/5) <!-- planning-id: PROTO-006 -->
jayanezj added this to the M3 - Transport and SOS milestone 2026-10-23 18:09:14 +02:00
jayanezj added the type:featurepriority:higharea:transport labels 2026-10-23 18:09:14 +02:00
jayanezj added type:feature and removed type:feature labels 2026-10-30 18:01:09 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jayanezj/traccar-client-macos#4