Релиз 1.4.4: обновление протокола WebRTC, фиксы звонков
All checks were successful
Android Kernel Build / build (push) Successful in 19m16s
All checks were successful
Android Kernel Build / build (push) Successful in 19m16s
- PacketWebRTC: добавлены publicKey и deviceId (новый серверный протокол) - Фикс ForegroundServiceDidNotStartInTimeException (safeStopForeground) - Фикс бесконечного "Exchanging keys" (ретрай KEY_EXCHANGE, auto-bind) - Фикс "Unknown" при сбросе звонка - Decline работает во всех фазах - Кастомный WebRTC AAR в git для CI
This commit is contained in:
@@ -23,8 +23,8 @@ val gitShortSha = safeGitOutput("rev-parse", "--short", "HEAD") ?: "unknown"
|
|||||||
// ═══════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════
|
||||||
// Rosetta versioning — bump here on each release
|
// Rosetta versioning — bump here on each release
|
||||||
// ═══════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════
|
||||||
val rosettaVersionName = "1.4.3"
|
val rosettaVersionName = "1.4.4"
|
||||||
val rosettaVersionCode = 45 // Increment on each release
|
val rosettaVersionCode = 46 // Increment on each release
|
||||||
val customWebRtcAar = file("libs/libwebrtc-custom.aar")
|
val customWebRtcAar = file("libs/libwebrtc-custom.aar")
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|||||||
@@ -18,15 +18,15 @@ object ReleaseNotes {
|
|||||||
Update v$VERSION_PLACEHOLDER
|
Update v$VERSION_PLACEHOLDER
|
||||||
|
|
||||||
Звонки
|
Звонки
|
||||||
- Полноэкранный входящий звонок с Accept/Decline даже когда приложение свёрнуто или убито
|
- Обновлён протокол WebRTC: publicKey и deviceId в каждом пакете
|
||||||
- Исправлен сброс PeerConnection — больше нет зависания ~30 сек между звонками
|
- Полноэкранный входящий звонок на экране блокировки
|
||||||
- Защита от фантомных звонков при принятии на другом устройстве
|
- Фикс бесконечного "Exchanging keys" при принятии звонка
|
||||||
|
- Фикс краша ForegroundService при исходящем звонке
|
||||||
|
- Кастомный WebRTC с E2EE теперь работает в CI-сборках
|
||||||
|
|
||||||
E2EE
|
Уведомления
|
||||||
- Улучшена диагностика шифрования звонков
|
- Аватарки и имена в уведомлениях
|
||||||
|
- Настройка отключения аватарок в уведомлениях
|
||||||
Push-уведомления
|
|
||||||
- Поддержка tokenType и deviceId для новых серверов
|
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
fun getNotice(version: String): String =
|
fun getNotice(version: String): String =
|
||||||
|
|||||||
@@ -19,12 +19,16 @@ enum class WebRTCSignalType(val value: Int) {
|
|||||||
class PacketWebRTC : Packet() {
|
class PacketWebRTC : Packet() {
|
||||||
var signalType: WebRTCSignalType = WebRTCSignalType.OFFER
|
var signalType: WebRTCSignalType = WebRTCSignalType.OFFER
|
||||||
var sdpOrCandidate: String = ""
|
var sdpOrCandidate: String = ""
|
||||||
|
var publicKey: String = ""
|
||||||
|
var deviceId: String = ""
|
||||||
|
|
||||||
override fun getPacketId(): Int = 0x1B
|
override fun getPacketId(): Int = 0x1B
|
||||||
|
|
||||||
override fun receive(stream: Stream) {
|
override fun receive(stream: Stream) {
|
||||||
signalType = WebRTCSignalType.fromValue(stream.readInt8())
|
signalType = WebRTCSignalType.fromValue(stream.readInt8())
|
||||||
sdpOrCandidate = stream.readString()
|
sdpOrCandidate = stream.readString()
|
||||||
|
publicKey = stream.readString()
|
||||||
|
deviceId = stream.readString()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun send(): Stream {
|
override fun send(): Stream {
|
||||||
@@ -32,6 +36,8 @@ class PacketWebRTC : Packet() {
|
|||||||
stream.writeInt16(getPacketId())
|
stream.writeInt16(getPacketId())
|
||||||
stream.writeInt8(signalType.value)
|
stream.writeInt8(signalType.value)
|
||||||
stream.writeString(sdpOrCandidate)
|
stream.writeString(sdpOrCandidate)
|
||||||
|
stream.writeString(publicKey)
|
||||||
|
stream.writeString(deviceId)
|
||||||
return stream
|
return stream
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1343,10 +1343,14 @@ object ProtocolManager {
|
|||||||
* Send WebRTC signaling packet (0x1B).
|
* Send WebRTC signaling packet (0x1B).
|
||||||
*/
|
*/
|
||||||
fun sendWebRtcSignal(signalType: WebRTCSignalType, sdpOrCandidate: String) {
|
fun sendWebRtcSignal(signalType: WebRTCSignalType, sdpOrCandidate: String) {
|
||||||
|
val pk = try { getProtocol().getPublicKey().orEmpty() } catch (_: Exception) { "" }
|
||||||
|
val did = appContext?.let { getOrCreateDeviceId(it) } ?: ""
|
||||||
send(
|
send(
|
||||||
PacketWebRTC().apply {
|
PacketWebRTC().apply {
|
||||||
this.signalType = signalType
|
this.signalType = signalType
|
||||||
this.sdpOrCandidate = sdpOrCandidate
|
this.sdpOrCandidate = sdpOrCandidate
|
||||||
|
this.publicKey = pk
|
||||||
|
this.deviceId = did
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user