今天遇到的產(chǎn)品需求是類似美團(tuán)外賣赠涮,當(dāng)有訂單推送的時(shí)候,提示“您有新訂單了”這樣的提示音梁厉。一般的通知還是用的系統(tǒng)的提示音辜羊。本來以為一會(huì)會(huì)就搞定,結(jié)果用了快兩小時(shí)的時(shí)間。不多說八秃,上代碼:
1.項(xiàng)目用的是極光推送碱妆。所以直接在這個(gè)方法中,將收到的通知內(nèi)容進(jìn)行解析昔驱。我們的需求是當(dāng)后臺(tái)給的字段“extrasparam”等于2的時(shí)候是訂單疹尾,播放自定義聲音。別的類型播放系統(tǒng)聲音骤肛。系統(tǒng)聲音列表詳見:iOS 系統(tǒng)提示音列表航棱,小伙伴們不要忘了將你們的自定義聲音,改成和后臺(tái)配置的“sound”字段的值一致萌衬,拖入工程中饮醇,記得要是caf格式的,切記切記秕豫。(我們用的是sound.caf朴艰, 哈哈)
2.但是這樣做的話,只有在App出于前臺(tái)的時(shí)候才會(huì)播放自定義聲音混移。因?yàn)閷⒆远x聲音的名稱改為和后臺(tái)小哥哥配置的值一致祠墅,導(dǎo)致App后臺(tái)的時(shí)候,不管什么類型的通知歌径,播放的都是自定義聲音毁嗦,難受~
嘗試一:在- (void)jpushNotificationCenter:(UNUserNotificationCenter*)center didReceiveNotificationResponse:(UNNotificationResponse*)response withCompletionHandler:(void(^)())completionHandler;方法中回铛,調(diào)用更改通知聲音方法狗准,結(jié)果失敗。原因是這個(gè)方法是在用戶點(diǎn)擊聲音的時(shí)候才會(huì)調(diào)用茵肃。但是我不要啊腔长,我要推送過來的時(shí)候就播放自定義聲音啊验残!
嘗試二:讓后臺(tái)小哥哥給我推送消息捞附,然后在收到自定義消息的時(shí)候在發(fā)送一個(gè)本地通知。結(jié)果還沒實(shí)施就看到極光的官方文檔中寫到:
因?yàn)橥扑拖⒌脑捠遣唤?jīng)過蘋果的APNs您没,相當(dāng)于是App內(nèi)部的消息鸟召。
解決辦法:
自己找了好多文檔和博客看,都沒有很好的解決我的問題氨鹏。靈機(jī)一動(dòng)欧募,讓后臺(tái)小哥哥給我傳sound的值的時(shí)候加個(gè)判斷唄。也就是當(dāng)extrasparam = 2的時(shí)候喻犁,sound的值是“sound.caf”,其他的時(shí)候值是“normal.caf”槽片。我工程里的聲音命名為“sound.caf”,哈哈肢础,簡單粗暴还栓,完美解決。