簡體   English   中英

如何正確更新通知通道android oreo

[英]How to properly update notification channel android oreo

我正在嘗試在創建通知渠道后更新它。 也就是說,我想正確設置通知聲音,但是在我創建之后。 我真的想不出正確的方法來做到這一點。

我嘗試的是刪除頻道並重新創建它,但它似乎不起作用......

if (notificationManager != null) {
            notificationManager.deleteNotificationChannel(NOTIFICATION_CHANNEL_ID);
            notificationManager.createNotificationChannel(channel);
            System.out.println("Created notification channel" + channel.getSound() + " " + channel.getImportance());
        }

創建通知渠道后,用戶對其設置擁有最終控制權。 作為開發者,您只能更改頻道的標題和描述。 如果要重新創建頻道,則必須使用不同的 ID。

請參閱: https : //developer.android.com/training/notify-user/channels

正如另一個答案中所述,您只能在創建頻道后更改其名稱和描述,這是正確的。 但是,正如您在代碼中指出的那樣,您可以刪除該頻道,然后重新創建它。 但是,如果您再次創建相同的頻道但更改了某些內容,例如聲音,它將無法正常工作。 我假設 Android 正在以相同的方式阻止該更改,如果您嘗試在它已經存在時創建它。 所以Android必須有辦法跟蹤所有被刪除的頻道(換句話說,它們沒有被完全刪除)。

如果您查看 WhatsApp,它們允許您從應用程序內部更改聲音,如果您稍微調查一下,您會發現它們確實在刪除和創建頻道。

所以,你可以做什么? 您可以做的是更改新通知渠道的 ID。 也許添加一個足夠大的隨機元素會阻止您兩次使用相同的 ID。 或者增加一些內容並將該信息存儲在您的應用程序中(首選項或數據庫或其他內容)。 如果“重新創建”頻道有一個新 ID,Android 將接受您的“更改”。 由於您沒有更改現有頻道,因此您正在創建一個全新的頻道。 如果您保持其余的用戶可見信息完整無缺(例如名稱、描述等),那么用戶將不會注意到這一點,而只會體驗到該類型通知(頻道)的聲音是從應用程序內部更改的。

有什么缺點嗎? 嗯,一個超級小問題是 Android 將在應用程序通知設置中顯示頻道已被刪除的次數(以提醒用戶“垃圾郵件”)。 我不認為很多用戶關心這個。 而且您還偏離了 Android 想要的設計(用戶對頻道的完全控制),這可能是不可取的。

所以從你如何描述你的用例來看,我認為以這種方式完成你想要的事情是公平的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM