根據小米的官方文檔,在服務器端創建消息時可以設置自定義鈴聲:
調用消息的extra(String key,String value)方法。生成器類將鍵設置為“聲音_URI ”,將值設置為鈴聲的URI。
鈴聲只能使用當前app中的資源,URI格式符合Android . resource://your package name/XXX/XXX。
鈴聲文件放在Android app的raw目錄下。
存儲的聲音文件需要擴展名,但是不要在uri中寫擴展名。
私信buildMessage()拋出異常{ String package name = " com . Xiaomi . mipushdemo ";String messagePayload = "這是壹條消息";String title = "通知標題";String description = "通知描述";消息消息=新消息。構建器()。標題(標題)。描述(描述)。有效負載(messagePayload)。受限包名稱(我的包名稱)。pass through(0)//消息使用通知欄。notifyType(1)。。額外的(常量。EXTRA_PARAM_SOUND_URI," Android . resource://"+package name+"/raw/shaking ")。build();返回消息;}
很明顯,小米要求我們將自定義鈴聲放在Android APP項目根目錄下的res/raw/文件夾中。請註意,該目錄不能有子文件夾。我用的是Hbuilder雲打包,雲打包裏的res/raw文件夾裏沒有辦法添加聲音資源。咨詢了hbuilder的官方DCloud,回復暫時不支持這個功能,以後再補充。
好吧。只能離線打包嗎?為鈴聲在本地重新部署所有引用的sdk?變化太大,還是算了吧。
靈光壹現,樸易想到了另壹個主意:繼續在雲端打包,下載打包好的apk文件。我們反編譯,在反編譯的res目錄下添加raw文件夾,在裏面加入音頻文件,比如shakingmp3.mp3,shakingaac.aac .然後編譯成新的apk包,然後重新簽名這個新的apk包!
按照上面的思路,我又走了壹遍,發現有效!別問我怎麽想到的,我不會告訴妳的。