Push-értesítések iOS-re, Androidra és webre (Sygnal), titkosított üzenetek visszafejtése a telefonon #14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "thatumi/native-push"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Összefoglaló
Push-értesítések zárt alkalmazásnál is, egyetlen átjárón keresztül:
iPhone/iPad (APNs), Android (FCM) és böngésző (Web Push). A mobilappokban a
titkosított üzenetek szövegét is maga a telefon fejti vissza, a feladó vagy a
tér profilképével. Az asztali (Tauri) app nem kap háttér-pusht.
Átjáró –
services/sygnal/push.szabotar.devmögött (NPM → 127.0.0.1:5000).vannak. A repóban csak a
sygnal.example.yamlvan.services/push-gatewaytörölve, a CI-lépésével együtt.Kliens –
apps/web/src/lib/push/dev.szabotar.jorkonvo.ios/.android/.web.Bejelentkezés után egyszeri engedélykérés mobilon. Token-cserénél a régi
pusher törlődik.
az értesítései eltűnnek.
event_id_onlypushert használnak. Az átjáró és azApple/Google csak azonosítókat lát: szoba, esemény, olvasatlan üzenetek
száma, és hogy melyik fióknak szól. Feladó, szobanév, szöveg és titkosított
tartalom nem megy át rajtuk.
Teljes előnézet / Csak a feladó / Rejtett.
értesítésekhez szüksége lesz (
nativeStore.ts): szerver-URL, token,Megolm-kulcsok (csak teljes módban), szoba- és tagnevek, kis profilképek.
Android
FirebaseMessagingService. A push alapján lekéri az eseményt,visszafejti, és MessagingStyle-értesítést készít szobánként, a feladó vagy a
tér képével.
PushStore: AES-256-GCM titkosítás, nem exportálható Android Keystore-kulccsal.Megolm.java: csak visszafejtésre képes Megolm, a vodozemac-ból generálttesztvektorokon tesztelve (
MegolmTest).google-services.jsonnincs a repóban.iOS
dev.szabotar.jorkonvo.NotificationService):lekéri és visszafejti az üzenetet, és Communication Notificationt
készít belőle (
INSendMessageIntent, a feladó képével).JorPushCorehelyi Swift csomag, amit az app és az extension közösen használ:eszközön, az első feloldás után érhető el), a biztonsági mentésekből kimarad;
swift testa Codemagicbuild-unsignedworkflow-jában fut, ugyanazokkal a vektorokkal, mint az Android.JorPushStoreCapacitor-plugin (ugyanaz az API, mint Androidon).aps-environmentproduction, Communication Notifications,NSUserActivityTypes. A Sygnal loc-keyjeihezLocalizable.stringsen/hu.codemagic.yaml: az új profil (jorkonvo-notification-service).automatikusan törlődik. Enélkül minden üzenet kétszer jönne, és a
kikapcsolás sem törölné a pushert.
Adatvédelem
Frissítve:
store/privacy-policy.mdésapps/web/public/privacy.html(EN + HU);store/play-data-safety.md;store/app-store-privacy.md;Ismert korlát, dokumentálva: ha egy üzenet olyan kulcsot használ, ami az
app utolsó megnyitása óta érkezett, az értesítésben „Titkosított üzenet” áll.
Tesztelés
npm run build+npm testzöld: 525 teszt átment, 1 kihagyva.MegolmTest: 7/7 zöld.feladó képével. Mindhárom előnézeti mód működik.
Összevonás után
a
store/play-data-safety.mdalapján.store/app-store-privacy.mdalapján, utána beküldés review-ra.
🤖 Generated with Claude Code
With an event_id_only pusher the push carries only room/event ids, the unread count and jk_uid (the account). PushContent now does the rest on the phone, per the account's preview mode: fetches the event with the stored access token, decrypts m.room.encrypted with the exported Megolm keys (checking the plaintext's room_id), names the sender/room from the app's directory (or the member/name state as a fallback), and picks avatars: DM -> the other person, channel -> its space's / room's picture, else the sender's. Any failure degrades to "Encrypted message" / "New message". PushStore keeps that data per account in the app-private dir, AES-GCM with a non-exportable Android Keystore key; PushStorePlugin ("JorPushStore") is how the app writes it. Legacy full-format pushes are still understood. Verified on the P30 Pro (Android 10): a real E2EE message sent by a second matrix-js-sdk client while the app was killed showed decrypted, with the sender's avatar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>