iOS15之后,不允許推送消息沒有 body 值,所以iOS15之前循環(huán)發(fā)送本地通知來實現(xiàn)后臺播放的語音消息的方式將不再可用。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網營銷、網站重做改版、南安網站定制設計、自適應品牌網站建設、H5網站設計、商城建設、集團公司官網建設、成都外貿網站制作、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為南安等各大城市提供網站開發(fā)制作服務。
所以我們將采用新的方式在 iOS15上實現(xiàn)后臺播放語音消息,這種方式不會有震動多次的情況,而且聲音是和推送消息一起出來的。
打開 Apple 開發(fā)者后臺,選擇 Identifiers ,創(chuàng)建一個App ID,并勾選 Push Notifications (配置推送證書的過程在此不再贅述,但必須要配置)
打開 Identifiers , 右側下拉列表中選擇 App Groups ,
打開主項目 App ID,勾選 App Groups ,并點擊 Configure
步驟同主項目App ID 配置 App Groups。
在"Targets"中選擇主項目Target,點擊 + Capability ,在 App Groups 上雙擊,如圖:
步驟同主項目App ID 配置 App Groups。
現(xiàn)在Xcode 中會有如下錯誤提示,則說明需要重新生成開發(fā)和生產的證書,因為App ID 中配置了 App Groups。
生成證書過程不再贅述。
需要準備幾段音頻,因為我們需要播放的是“微信到賬11元”,所以第一段就是“微信到賬”,然后就是0-9,點、十、百、千、萬、元,可通過在線文字轉音頻網站處理。
把這些聲音文件放在主項目中的任意位置就可以。
Have fun.
1、點擊設置。如圖
2、點擊“通知”。如圖:
3、以“提醒事項”的推送為例。點擊“提醒事項”。如圖:
4、點擊“通知聲音”。如圖:
5、選擇喜歡的聲音即可。
iOS15之后,推送多條語音會產生多條橫幅,對于動態(tài)金額語音,多條橫幅是不可取的
參考:
1.制作推送提醒鈴聲
你可以轉換格式為aiff,wav,caf 格式文件,最多30s,(一般就1-2s)
如果沒有這些文件 mac中就有一些做好的聲音資源
/System/Library/Sounds/
Basso.aiff Frog.aiff Hero.aiff Pop.aiff Submarine.aiff
Blow.aiff Funk.aiff Morse.aiff Purr.aiff Tink.aiff
Bottle.aiff Glass.aiff Ping.aiff Sosumi.aiff
可以使用一下代碼進行轉換格式
afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v
2.把.caf文件倒入到Xcode項目中
3.修改
$body['aps'] = array(
'alert' = $message,
//'sound' = 'default',
'sound' = 'sub.caf', //為你添加到項目中的聲音文件名稱
'badge' = 1000
);
網上有很多博客說添加IOS10之后新增的Notification Service Extension才可以推送Apns自定義鈴聲,實際上是不對的,簡單的自定義語音推送IOS10之前就已經支持,而且APNS Server與deviceToken直接相關聯(lián),自然也不存在許多博客說的殺死App后接受不到推送的問題。
有關Notification Service Extension多媒體拓展問題可參考
本文提供簡單的自定義語音推送解決方案。
修改蘋果原生推送聲音:
(1)App在后臺或者被殺死時,服務器給你推送的userinfo中sound字段的value和你本地的聲音文件名一致時,這樣就可以播放你本地自定義的語音文件(mp3,wav等常見語音格式都可以支持)。
(2)App運行在前臺時大部分App會關閉掉UNNotificationPresentationOptionSound權限,當你有類似美團接單,支付寶到賬等需前臺響鈴的需求時需要自己寫響鈴方法,這里主要有兩種解決方案。
方案1播放系統(tǒng)音效
將此方法在應用在前臺處理推送的方法中調用,注意區(qū)分iOS10前后處理方法的不同。
方案2:AVAudioPlayer播放
單例一個AVAudioPlayer控制類
這里我們推薦使用第一種方法,通過系統(tǒng)方法進行播放。
自從iOS升級到12.0.1 突然發(fā)現(xiàn)推送語音播報沒有了效果了,之前iOS12 完全沒有影響;
如何實現(xiàn)(網上很多,基本方案就是UNNotificationServiceExtension+語音合成)
調試了一下NotificationServiceExtension 打了斷點,發(fā)現(xiàn)AVSpeechSynthesizer 崩潰了,試了很多都以失敗告終,
在網上查找資料無果,最后嘗試使用第三方語音軟件,最后成功了,折騰了我?guī)滋?,最后希望能夠幫助苦惱的童靴們?/p>
這里需要注意一下細節(jié):
我用的百度語音,這里你需要將百度語音的依賴包,添加到你的pushserver 的 link binary with libraries 里面!
最后大功告成!