IOS 推送訊息聲音自定義
https://www.jianshu.com/p/d0ef94ee5282
https://www.jianshu.com/p/1ee3d75086c7
https://blog.csdn.net/sinat_27741463/article/details/102758611
https://www.jianshu.com/p/f326987c737e
http://www.cocoachina.com/articles/17769
https://www.jianshu.com/p/3260f864e5aa
iOS 遠端推送和本地推送時播放自定義音訊
先上結論:
在各平臺及極光推送技術論壇看了大量技術貼後,總結了實現接到推送時播放音訊的幾種方法:
- 使用voip,即pushKit,是蘋果專為視訊通話開放的高優先順序推送,此推送可支援很大程度的自定義,但是如果APP沒有視訊通話功能時使用這個方法,稽核時很可能被拒,是一種偏方。我這裡沒用這個方法。
- 使用靜默推送,然後在接受到推送之後建立本地推送,在本地推送中播放音訊。但是靜默推送每小時有次數限制。未採用此方法。
- 直接在推送中設定sound欄位,sound欄位支援自定義音訊,只需要將音訊拖到工程中,並在傳送推送時將音訊全名放到sound欄位中即可,系統會自動播放這段音訊。我這裡直接用的這個方法,此方法注意事項及通知示例見下方。
- 使用Notification Service Extension,在推送回調裡使用AVAudioSession來播放音訊,這個方法在iOS12.1之後已經不可用了。iOS12.1之前給出這個拓展推送主要是為了豐富推送的UI樣式,推送資訊加密之類的,結果卻被用做推送語音播報,所以在12.1之後,在這個推送擴充套件裡面AVAudioPlayer就失效了.
需要注意的是:
-
以上2,3方法,播放的音訊在預設情況下只有5秒左右,當通知欄收回時,音訊也會自動停止。想要播放更長的時間則需要在手機設定-》你的APP設定-》通知-》橫幅風格 改為持續,這樣推送通知不會收回,音訊就可以播放完。或者保證音訊在五秒左右也可以。
-
應用在後臺時想觸發回撥需要在推送中傳入欄位:
"content-available":1
,或者"content-available":true
-
靜默推送需要設定
"mutable-content":1 //或true
,否則不會走target中的回撥,且在一些版本的iOS系統下,target中回撥不會斷點,但是會正常執行。
通知示例:
{"aps"=>{
"content-available" => 1,
"alert" => {
"title"=>"這是標題",
"subtitle"=>"這是小標題",
"body"=>"這是內容"
},
"badge" => 1
"sound" => "one.wav"
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
極光推送觸發回撥需勾選content-available,如下圖
IOS訊息推送聲音預設使用系統聲音,可以支援自定義。
注意事項:
1.由於系統播放器播放支援的音訊格式系統預設三種aiff, wav, 和 caf (應用在前端後臺不執行都可以播放,只要安裝應用能收到訊息就可以)。
轉換方法(afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v)。
2.音訊放在工程主目錄。
3.音訊時長不要超過30s。
4.音訊名稱要和{"aps":{"alert":"This is some fancy sound message.","badge":2,"sound": "sound.caf"}}要和推送的sound欄位值保持一個可以自己定義。
5.真機執行,靜音模式聽不到。關閉靜音模式。
詳見官網:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
作者:志閒真人
連結:https://www.jianshu.com/p/d0ef94ee5282
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。