From a9be1282c68c15b1e18f453a6bde8cbdcc0685a8 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Thu, 2 Apr 2026 21:47:42 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=BB=D0=B8=D0=B7=201.4.4:=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=82=D0=BE=D0=BA=D0=BE=D0=BB=D0=B0=20WebRTC?= =?UTF-8?q?,=20=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20=D0=B7=D0=B2=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PacketWebRTC: добавлены publicKey и deviceId (новый серверный протокол) - Фикс ForegroundServiceDidNotStartInTimeException (safeStopForeground) - Фикс бесконечного "Exchanging keys" (ретрай KEY_EXCHANGE, auto-bind) - Фикс "Unknown" при сбросе звонка - Decline работает во всех фазах - Кастомный WebRTC AAR в git для CI --- app/build.gradle.kts | 4 ++-- .../com/rosetta/messenger/data/ReleaseNotes.kt | 16 ++++++++-------- .../rosetta/messenger/network/PacketWebRTC.kt | 6 ++++++ .../rosetta/messenger/network/ProtocolManager.kt | 4 ++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5f6e111..9b5279a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -23,8 +23,8 @@ val gitShortSha = safeGitOutput("rev-parse", "--short", "HEAD") ?: "unknown" // ═══════════════════════════════════════════════════════════ // Rosetta versioning — bump here on each release // ═══════════════════════════════════════════════════════════ -val rosettaVersionName = "1.4.3" -val rosettaVersionCode = 45 // Increment on each release +val rosettaVersionName = "1.4.4" +val rosettaVersionCode = 46 // Increment on each release val customWebRtcAar = file("libs/libwebrtc-custom.aar") android { diff --git a/app/src/main/java/com/rosetta/messenger/data/ReleaseNotes.kt b/app/src/main/java/com/rosetta/messenger/data/ReleaseNotes.kt index 3c6a07d..3767654 100644 --- a/app/src/main/java/com/rosetta/messenger/data/ReleaseNotes.kt +++ b/app/src/main/java/com/rosetta/messenger/data/ReleaseNotes.kt @@ -18,15 +18,15 @@ object ReleaseNotes { Update v$VERSION_PLACEHOLDER Звонки - - Полноэкранный входящий звонок с Accept/Decline даже когда приложение свёрнуто или убито - - Исправлен сброс PeerConnection — больше нет зависания ~30 сек между звонками - - Защита от фантомных звонков при принятии на другом устройстве + - Обновлён протокол WebRTC: publicKey и deviceId в каждом пакете + - Полноэкранный входящий звонок на экране блокировки + - Фикс бесконечного "Exchanging keys" при принятии звонка + - Фикс краша ForegroundService при исходящем звонке + - Кастомный WebRTC с E2EE теперь работает в CI-сборках - E2EE - - Улучшена диагностика шифрования звонков - - Push-уведомления - - Поддержка tokenType и deviceId для новых серверов + Уведомления + - Аватарки и имена в уведомлениях + - Настройка отключения аватарок в уведомлениях """.trimIndent() fun getNotice(version: String): String = diff --git a/app/src/main/java/com/rosetta/messenger/network/PacketWebRTC.kt b/app/src/main/java/com/rosetta/messenger/network/PacketWebRTC.kt index 6589fc1..a26c7bb 100644 --- a/app/src/main/java/com/rosetta/messenger/network/PacketWebRTC.kt +++ b/app/src/main/java/com/rosetta/messenger/network/PacketWebRTC.kt @@ -19,12 +19,16 @@ enum class WebRTCSignalType(val value: Int) { class PacketWebRTC : Packet() { var signalType: WebRTCSignalType = WebRTCSignalType.OFFER var sdpOrCandidate: String = "" + var publicKey: String = "" + var deviceId: String = "" override fun getPacketId(): Int = 0x1B override fun receive(stream: Stream) { signalType = WebRTCSignalType.fromValue(stream.readInt8()) sdpOrCandidate = stream.readString() + publicKey = stream.readString() + deviceId = stream.readString() } override fun send(): Stream { @@ -32,6 +36,8 @@ class PacketWebRTC : Packet() { stream.writeInt16(getPacketId()) stream.writeInt8(signalType.value) stream.writeString(sdpOrCandidate) + stream.writeString(publicKey) + stream.writeString(deviceId) return stream } } diff --git a/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt b/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt index ab4fdcb..7e2de9f 100644 --- a/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt +++ b/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt @@ -1343,10 +1343,14 @@ object ProtocolManager { * Send WebRTC signaling packet (0x1B). */ fun sendWebRtcSignal(signalType: WebRTCSignalType, sdpOrCandidate: String) { + val pk = try { getProtocol().getPublicKey().orEmpty() } catch (_: Exception) { "" } + val did = appContext?.let { getOrCreateDeviceId(it) } ?: "" send( PacketWebRTC().apply { this.signalType = signalType this.sdpOrCandidate = sdpOrCandidate + this.publicKey = pk + this.deviceId = did } ) }