Repository navigation
Evita som e vibração repetidos a cada update da notificação no Android - #12
brunonahornygaudium wants to merge 1 commit into
Conversation
…epetição a cada atualização
|
✅ Review postada — #12 (review) job_id: |
There was a problem hiding this comment.
O fix ataca a causa raiz. No Android, o updateData deixava som e vibração salvos no SharedPreferences, e o API_UPDATE sempre chama playCustomSound()/playVibration(), então eles tocavam de novo a cada update. Agora o Android remove as chaves quando o valor vem nulo, igual ao NotificationContent.swift do iOS (linhas 84-94). O diff é mínimo, updateData só tem um chamador (ForegroundServiceManager.update) e os outros campos não mudam.
| sound?.let { putString(PrefsKey.NOTIFICATION_SOUND, it) } | ||
| vibratePattern?.let { | ||
| putString(PrefsKey.NOTIFICATION_VIBRATE_PATTERN, it) | ||
| // Som e vibração valem só para este update, como no iOS. |
There was a problem hiding this comment.
Nit / documentação (não bloqueante): o fix está correto e o comentário explica bem o motivo da diferença em relação aos outros campos, que continuam usando ?.let.
Só lembrando que isso muda o comportamento da API pública do plugin no Android. Antes, o som e a vibração ficavam salvos entre updates. Agora valem só para o updateService em que foram passados. Algum consumidor que mandava notificationSound/notificationVibratePattern uma vez e esperava que eles continuassem valendo vai deixar de ouvir o som nos updates seguintes.
Sugestão: colocar uma entrada no CHANGELOG.md (ex.: * [**FIX-Android**] Clear notification sound/vibrate pattern on updateService when not provided, matching iOS behavior), para quem atualizar a versão do plugin ficar sabendo da mudança.
Summary
updateDatadoNotificationContentsó gravava som e vibração quando eles vinham no pedido. Quando vinhamnull, o valor anterior ficava salvo. Como oAPI_UPDATEsempre chamaplayCustomSound()eplayVibration(), qualquerupdateServicesem som tocava de novo o último som e repetia a última vibração.arriving, o som e a vibração tocavam a cada ciclo (bug F-02800).null, igual aoNotificationContent.swiftdo iOS já faz. Som e vibração valem só para o update em que foram informados.Test plan
accepted,arriving,arrived) continua tocando.