================================================================================
  PHOQUES — Guide iOS (pédagogique, plug-and-play pour débutants)
  pctamalou.fr · Echoes of Hackers (ÉOH) · Platon-Y
================================================================================

Question fréquente : « Il y a F-Droid sur Android… et sur iPhone ? »

Réponse courte : NON. Apple n’offre pas d’équivalent grand public libre
comme F-Droid. Phoques reste Android-first.

Ce pack contient :
  • un SQUELETTE SwiftUI réel  →  dossier ios/  (projet Xcode)
  • ce guide pour le compiler / installer plus tard sur un Mac
  • PAS de fichier .ipa binaire préfabriqué (ça se construit sur Mac)

================================================================================
0) CHEMIN LE PLUS SIMPLE (RÉSUMÉ « PLUG-AND-PLAY »)
================================================================================

  Sur un Mac (obligatoire pour compiler une app iPhone proprement) :

  1. Installez Xcode (Mac App Store) — gratuit.
  2. Ouvrez le projet :  phoques_paddle/ios/Phoques.xcodeproj
  3. Connectez-vous avec votre Apple ID dans Xcode
       (Xcode → Settings → Accounts → « + » → Apple ID).
  4. Signing automatique : Team = votre Apple ID / Developer.
  5. Choisissez votre iPhone (ou un Simulateur) → bouton Run ▶.

  → L’app « Phoques » (squelette) s’installe sur l’appareil / simulateur.
  → Plus tard : TestFlight ou App Store si vous avez un compte Developer payant.

  Pas de Mac ? Vous ne pouvez pas builder l’IPA ici. Utilisez Android
  (apk/ de ce pack) en attendant, ou empruntez / louez un Mac ponctuellement.

================================================================================
1) POURQUOI PAS « COMME FDROID » SUR APPLE ?
================================================================================

  • Sur Android, F-Droid distribue des apps libres hors Google Play.
  • Sur iPhone / iPad, le chemin « officiel » grand public est l’App Store
    (compte Apple Developer, validation Apple, ~99 USD / an).
  • Des contournements existent (plus bas) : plus techniques, parfois
    limités dans le temps, pas un vrai store libre stable pour tout le monde.

On l’expliquera clairement sur pctamalou.fr : pas de promesse trompeuse.

================================================================================
2) ÉTAPES DÉTAILLÉES — OUVRIR LE SQUELETTE SUR MAC (DÉBUTANT)
================================================================================

Prérequis matériel / logiciel
-----------------------------
  • Un Mac (Intel ou Apple Silicon) avec macOS récent
  • Xcode (version récente, idéalement 15+) depuis le Mac App Store
  • Un Apple ID (le même que pour l’App Store / iCloud — gratuit pour
    tester sur VOTRE iPhone ; compte Developer payant pour TestFlight /
    App Store public)
  • Optionnel : un iPhone / iPad avec un câble USB

Étape A — Copier le projet
--------------------------
  1. Prenez le dossier  phoques_paddle/ios/
     (ou tout le pack phoques_paddle).
  2. Copiez-le sur le Mac (USB, AirDrop, Git, etc.).
  3. Dans le Finder :  ios/Phoques.xcodeproj  → double-clic.
     Xcode s’ouvre. Si macOS demande d’accepter la licence Xcode :
     ouvrez une fois Xcode et validez.

Étape B — Se connecter avec Apple ID (signature)
------------------------------------------------
  C’est le point « plug-and-play » le plus important pour un débutant.

  1. Menu Xcode → Settings… (ou Preferences…) → onglet Accounts.
  2. Bouton « + » en bas à gauche → Apple ID → connectez-vous
     (e-mail + mot de passe / 2FA Apple).
  3. Fermez Settings.
  4. Dans la colonne de gauche, cliquez sur le projet bleu « Phoques »,
     puis sur la cible (TARGET) « Phoques ».
  5. Onglet « Signing & Capabilities » :
       • cochez « Automatically manage signing »
       • Team : choisissez votre nom / Apple ID qui vient d’apparaître
  6. Si Xcode affiche une erreur de Bundle ID déjà pris :
       changez PRODUCT_BUNDLE_IDENTIFIER (ex. fr.pctamalou.phoques.votreprenom)
       dans Signing, champ Bundle Identifier.

  Compte gratuit (Apple ID seul) :
    • Vous pouvez installer l’app sur VOTRE iPhone pour ~7 jours,
      puis re-signer / réinstaller (limite Apple).
  Compte Apple Developer (~99 USD / an) :
    • Installs plus longues, TestFlight, puis App Store.

Étape C — Lancer sur Simulateur (sans iPhone)
---------------------------------------------
  1. En haut de Xcode, à côté du bouton ▶, choisissez un simulateur
     (ex. iPhone 15).
  2. Cliquez sur ▶ (Run) ou Cmd+R.
  3. Attendez la compilation. L’app s’ouvre dans le simulateur.

Étape D — Lancer sur un vrai iPhone
-----------------------------------
  1. Sur l’iPhone : Réglages → Confidentialité et sécurité → Mode
     développeur (si demandé) — activez-le (iOS 16+).
  2. Branchez l’iPhone au Mac (câble). Faites confiance à l’ordinateur.
  3. Dans Xcode, sélectionnez votre iPhone dans la liste des destinations.
  4. ▶ Run.
  5. Première fois sur l’iPhone : Réglages → Général → Gestion des
     appareils (ou VPN et gestion de l’appareil) → faites confiance
     au certificat développeur (votre Apple ID).
  6. Rouvrez Phoques.

Étape E — (Plus tard) Produire une IPA / TestFlight / App Store
---------------------------------------------------------------
  Ce n’est PAS nécessaire pour tester le squelette.

  Avec un compte Apple Developer :
    • Product → Archive dans Xcode
    • Organizer → Distribute App
        → TestFlight (bêta) ou App Store Connect (public)
  Sans Developer payant : pas de TestFlight / Store public ;
  seulement install locale / sideload avancé (voir §3).

================================================================================
3) OPTIONS DE DISTRIBUTION (DU PLUS « PROPRE » AU PLUS BRICOLÉ)
================================================================================

----- Option A — App Store (plus tard) -----

  • Partir de ce squelette SwiftUI, porter les idées produit.
  • Compte Apple Developer.
  • Respecter les règles App Store (vie privée, pas de « root »,
    messagerie Bluetooth possible mais avec limites système).
  • Revue Apple : délais, refus possibles → expliquer le caractère
    défensif / open source.

  Avantage : installation simple pour le grand public.
  Inconvénient : pas un store libre ; Apple garde le portail.

----- Option B — TestFlight (bêta) -----

  • Toujours compte Apple Developer.
  • Distribuer une bêta à des testeurs (limites de places / durée).
  • Idéal pour ÉOH / early testers avant (ou sans) App Store public.

  → TestFlight n’est PAS utilisable sans compte Developer.

----- Option C — Sideload / AltStore / outils similaires -----

  • Installer une IPA signée hors App Store.
  • Souvent : re-signature périodique (ex. ~7 jours sans compte Dev,
    plus long avec compte Dev), démarches plus « geek ».
  • Utile pour laboratoires et utilisateurs avancés.
  • À documenter avec prudence : pas le chemin recommandé « nullos ».

----- Option D — Code source (ce pack) -----

  • Le dossier ios/ EST déjà le code source du squelette.
  • Les gens qui ont un Mac compilent avec Xcode (voir §2).
  • C’est le plus « libre » techniquement pour commencer.

================================================================================
4) CE QU’ON METTRA SUR LE SITE (TEXTE TYPE)
================================================================================

  « Phoques est disponible sur Android (F-Droid et/ou APK signée ÉOH).
   Sur iPhone, il n’existe pas d’équivalent F-Droid. Le squelette SwiftUI
   est dans le dépôt / pack (dossier ios/) : ouvrez Phoques.xcodeproj
   sur un Mac, connectez votre Apple ID dans Xcode, puis Run.
   TestFlight / App Store dès qu’une version iOS aboutie existera.
   En attendant, Android reste la plateforme supportée. »

================================================================================
5) CHECKLIST « ON A VRAIMENT TESTÉ SUR IPHONE »
================================================================================

  [ ] Build Xcode OK sur Mac (ce squelette compile sans erreur)
  [ ] Signing : Apple ID / Team OK
  [ ] Install sur Simulateur OK
  [ ] Install sur appareil réel (câble) OK
  [ ] (Plus tard) Archive → TestFlight ou Store
  [ ] Captures + notes de version
  [ ] Rien de faux dans les boutons du site

Tant que ces cases ne sont pas cochées pour une VRAIE feature iOS :
ne pas afficher « Télécharger iOS » comme si une IPA publique existait.

================================================================================
6) FONCTIONNALITÉS : ATTENTES RÉALISTES SOUS iOS
================================================================================

  • Beaucoup d’audits « type root / Termux / NetHunter » n’existent pas
    comme sur Android.
  • Bluetooth / network / permissions : API Apple différentes.
  • Phoques iOS sera un cousin partageant l’esprit (vie privée,
    transparence), pas un clone pixel-perfect avec les mêmes CLI Kali.
  • Ce squelette montre Accueil / Vie privée / À propos — le portage
    audit & messagerie P2P viendra ensuite dans le même projet Xcode.

================================================================================
7) OÙ SONT LES FICHIERS ?
================================================================================

  Pack :     ~/Bureau/phoques_paddle/
  Squelette : phoques_paddle/ios/
  Projet :   phoques_paddle/ios/Phoques.xcodeproj
  Sources :  phoques_paddle/ios/Phoques/*.swift
  Mini-doc : phoques_paddle/ios/README.md
  Android :  phoques_paddle/apk/ + PhoquesThePolice/ (à côté)

================================================================================
8) RÉSUMÉ POUR DÉBUTANT
================================================================================

  Android aujourd’hui  → F-Droid (bientôt) ou APK de ce pack / du site.
  iPhone aujourd’hui   → squelette SwiftUI dans ios/ ;
                         sur Mac : ouvrir Xcode → Apple ID → Run ▶.
  Pas d’IPA magique    → on ne livre pas de faux binaire iOS depuis Linux.
  Restez libre         → code ouvert, pas de fausse boutique « F-Droid iOS ».

Contact : admin@pctamalou.fr  ·  admin@e-of-h.fr
================================================================================

--------------------------------------------------------------------------------
MESSAGERIE 3 (squelette iOS)
--------------------------------------------------------------------------------
  Voir ios/Messaging/ et ios/Views/MessagingView.swift
  Ajouter les fichiers listés dans ios/ADD-FILES-XCODE.txt
  Port TCP cible : 17473 — même politique contact-only qu'Android.


--------------------------------------------------------------------------------
MESSAGERIE 3.2 (squelette)
--------------------------------------------------------------------------------

  Aligné Android : consentement nœud relais obligatoire pour la messagerie,
  ContactRelay contact-only, crypto X25519 + AES-GCM (CryptoKit).
  Nœud volontaire HTTPS : Messaging/VolunteerRelay.swift (client défi X25519
  + HMAC, dépôt / relève / acquittement) et Views/VolunteerRelayView.swift
  (Réglages). Même protocole que l'app Android et relay-amen/.

================================================================================
  NOUVEAUTÉS 3.4 DANS LE SQUELETTE iOS (parité avec Android)
================================================================================

Le squelette SwiftUI couvre désormais les mêmes fonctions que l'app Android :

  1. JUMELAGE BLUETOOTH SIMPLIFIÉ (avec confirmation)
     Écran Messagerie → bouton « Jumeler par Bluetooth ». Avant d'échanger
     la clé secrète, un popup « Jumeler avec ce contact ? » demande de
     confirmer que la personne est bien en face de vous. On ne stocke la clé
     qu'après « Jumeler ».
     Fichier : Views/MessagingView.swift (alert showPairConfirm).

  2. TEST DU RELAIS DANS L'ONGLET MESSAGERIE
     À l'ouverture (et au « tirer pour rafraîchir »), l'app interroge votre
     Nœud volontaire (par défaut https://bot-y.fr/phoques-relay/) et affiche
     une bannière :
       • « Relais joignable ✓ — vos messages peuvent être relayés »
       • « Relais injoignable — l'envoi passera par Bluetooth ou Wi-Fi direct
          quand le contact est à portée »
       • « Vérification du relais… » pendant le test.
     Code : RelayBanner + refreshRelayBanner(), via VolunteerRelayClient.info().

  3. MESSAGES ÉPHÉMÈRES (par conversation)
     Interrupteur « Messages éphémères » dans le fil : les messages s'effacent
     des deux téléphones après lecture. Le marqueur éphémère voyage à
     l'intérieur du texte chiffré — le relais ne le voit jamais.
     Fichier : Messaging/ConversationOptions.swift (champ ephemeral).

  4. ACCUSÉ « VU »
     Réglage global « Accusés Vu » (activé par défaut). Quand il est actif,
     un « Vu HH:MM » chiffré est renvoyé à l'expéditeur et s'affiche sous
     le message. Désactivable.
     Fichier : Messaging/ConversationOptions.swift (MessagingPrefs).

  5. DÉTRUIRE UNE CONVERSATION
     Balayez un contact → « Détruire » → popup « Action irréversible ».
     Confirmation efface les messages, accusés et traces locales, et retire
     du relais les enveloppes non encore relevées.
     Fichier : Views/MessagingView.swift (alert showDestroyConfirm).

RAPPEL IMPORTANT : ce squelette décrit l'INTERFACE et la logique ; le câblage
Bluetooth réel, le stockage chiffré et le réseau se finalisent dans Xcode sur
Mac. La cryptographie (X25519 + AES-GCM) et le protocole de relais sont déjà
identiques à Android et au relais PHP, pour que les deux plateformes se parlent.

Fichiers à cocher dans Xcode : voir ios/ADD-FILES-XCODE.txt (ajout de
Messaging/ConversationOptions.swift).
