feature request: in-app notification sound
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- react-native, typescript
- Lĩnh vực
- mobile
Hướng nghiên cứu
Bắt đầu bằng cách lần theo cách cài đặt phòng cung cấp audioNotificationValue từ rooms.saveNotification và vị trí các thông báo trong ứng dụng được kích hoạt trong client di động. Xem lại các sound asset hiện có và luồng thông báo trước khi quyết định cách các preset, bản tải xuống cục bộ, việc chọn và phát được kết hợp với nhau. Được xem là hoàn thành khi âm thanh phòng đã chọn được phát cho các thông báo trong ứng dụng hợp lệ, với fallback được tích hợp khi cần.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Feature Description
Currently, the mobile application allows users to select a notification sound (audioNotificationValue) which is successfully saved on the backend via rooms.saveNotification . However, this preference is not respected by the mobile client when in-app notifications are triggered.
This feature proposes enabling the mobile app to play the selected notification sound for in-app messages, ensuring that user preferences are fully applied.
The implementation should:
- Read the audioNotificationValue from room settings
- Map it to corresponding sound asset
- Trigger playback when a valid notification event occurs
Motivation and Use Case
Why this matters
Users expect their notification settings to actually affect behavior. Right now:
- Changing notification sound has no effect in the mobile app
- This creates confusion and inconsistency between backend settings and user experience
Use cases
- A user sets different sounds for different rooms → helps identify message source instantly
- A user prefers subtle vs loud sounds → improves usability in different environments
- Teams relying on notifications → need quick auditory distinction
Impact
- Fixes a broken UX expectation
- Aligns mobile behavior with backend/web capabilities
- Improves personalization and usability
Implementation Ideas
-
Fetch Presets — Backend returns a list of preset sound names (e.g.
["chime", "bell", "ping"]). Each name maps to a downloadable URL, either constructed on the client or returned directly by the API. -
Download on Demand — Each preset is shown with a Download button. On tap, the file is downloaded to
documentDirectory/notification_sounds/<name>.mp3viaexpo-file-system. Download is skipped if the file already exists locally. -
UI States — Each preset tracks its own state:
not downloaded→downloading→downloaded→selected. User can also preview before selecting. -
Private Storage — Files are saved to
documentDirectory, which is sandboxed to the app on both iOS and Android. Not visible to other apps or the device media library. -
Persist Selection — Active sound preference is saved to
AsyncStorageor the existing room settings store as the local file path. -
Playback — On in-app notification trigger, resolve the saved path and play via
expo-av. Falls back to a bundled default if the file is missing or not yet downloaded.
Is this feature available in the API or web version?
Available in Web Version
Rocket.Chat Server Version
No response
Rocket.Chat App Version
No response
Device Name
No response
OS Version
No response
Additional Context
No response
- Ngôn ngữ chính
- TypeScript
- Star
- 2.4k
- Fork
- 1.5k
- Merge trung bình
- 1 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 29
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của RocketChat/Rocket.Chat.ReactNative
-
[IMPROVEMENT] Remove redundant `await` on synchronous `userPreferences.getBool` in `getUsersPresence`Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởtype: feature
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
RocketChat/Rocket.Chat.ReactNative#7737 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
UIKit modal: a viewSubmit response with no `type` field fails to close the modal on mobile (regression from #7057)Có thể đã có người làm @erikurt9 đã nhận 106 ngày trước. Đang mởtype: bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
RocketChat/Rocket.Chat.ReactNative#7503 · 3 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
type: bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
RocketChat/Rocket.Chat.ReactNative#7437 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
✅ tests 👷 ci type: feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
RocketChat/Rocket.Chat.ReactNative#7247 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug: goRoom navigates to broken RoomView after failed DM creation from searchCó thể đã có người làm @deepak0x đã nhận 216 ngày trước. Đang mởtype: bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
RocketChat/Rocket.Chat.ReactNative#7098 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của RocketChat/Rocket.Chat.ReactNative
Issue tương tự
-
Bug: Broken RTL / BiDi text rendering when mixing Persian (Farsi) with English or numbersCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbug
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
amosblomqvist/learnharness#758 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Change WorkspacesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
bitfocus/companion-module-renewedvision-propresenter-api#134 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
rcpch/digital-growth-charts-react-component-library#304 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
dsh-market/dsh-market#1210 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
trustjonathan/STUDY-HUB#13 ·