古詩詞大全網 - 個性簽名 - 米家app在手機上推送消息時只震動不響鈴,怎麽調成響鈴的?

米家app在手機上推送消息時只震動不響鈴,怎麽調成響鈴的?

基於html5 plus做的app項目,利用Hbuilder在線雲端打包,集成了小米推送,怎麽集成暫且不提,飄易只說壹說安卓手機如何在消息到達的時候,自定義鈴聲。

根據小米官方文檔,在服務器端創建消息時可以設置自定義鈴聲:

調用Message.Builder類的extra(String key, String value)方法將key設置為"sound_uri",value設置為鈴聲的URI。

鈴聲只能使用當前app內的資源,URI格式滿足 android.resource://your packagename/XXX/XXX。

鈴聲文件放在Android app的raw目錄下。

存儲的聲音文件需要有擴展名,但是不要把擴展名寫在uri中。

private Message buildMessage() throws Exception { String PACKAGENAME = "com.xiaomi.mipushdemo"; String messagePayload = “This is a message”; String title = “notification title”; String description = “notification description”; Message message = new Message.Builder() .title(title) .description(description).payload(messagePayload) .restrictedPackageName(MY_PACKAGE_NAME) .passThrough(0) //消息使用通知欄方式 .notifyType(1) .extra(Constants.EXTRA_PARAM_SOUND_URI, "android.resource://" + PACKAGENAME + "/raw/shaking") .build(); return message; }

很明顯,小米要求我們把自定義鈴聲放置在Android APP項目根目錄的 res/raw/ 文件夾裏。註意這個目錄不能有子文件夾。而我使用的是Hbuilder雲端打包,雲端打包並沒有辦法添加 res/raw 文件夾裏面的聲音資源,咨詢 hbuilder 官方DCloud,答復說暫時還不支持此功能,後續補充。

好吧。難道只能離線打包?為了壹個鈴聲,要把所有引用的sdk重新在本地部署壹遍?改動太大,還是算了。

靈光壹現,飄易想到另壹個思路:繼續雲端打包,下載打包好的 apk 文件,我們進行反編譯,在反編譯後的res目錄下添加raw文件夾,往裏面添加音頻文件,比如 shakingmp3.mp3 和 shakingaac.aac 兩個音頻。然後再編譯成新的apk包,再將這個新apk包進行重新簽名!

按照上面的思路走了壹遍,發現果然好使!別問我為什麽會想到,我是不會告訴妳的。