第一次獨(dú)立接入推送,有一些理解上的錯誤假颇,特此備注一下胚鸯。
信鴿文檔寫的還是很明確的,按照文檔基本上沒有什么問題笨鸡,但是姜钳,如果理解錯誤,會鉆牛角尖形耗,以下是本人認(rèn)為需要強(qiáng)調(diào)的地方:
1.注冊設(shè)備:注冊設(shè)備是在APPdelegate里面哥桥,在這里注冊一次設(shè)備即可,后面不必每次都注冊設(shè)備激涤,即registerDeviceToken方法(圖1)拟糕,當(dāng)然為了確保設(shè)備有注冊過,不要調(diào)用注銷設(shè)備的方法(圖2),調(diào)用此方法后再調(diào)用register設(shè)備的方法已卸,發(fā)現(xiàn)不起作用佛玄,因此注銷設(shè)備的方法慎重調(diào)用;
2.賬號/別名(以下稱賬號)推送:
賬號是推送時候的唯一標(biāo)識符累澡,推送時根據(jù)標(biāo)識符進(jìn)行推送梦抢,這種情況最常見的現(xiàn)象是外賣商家客戶端接單,或者給購買物品的用戶進(jìn)行發(fā)貨等針對唯一用戶推送消息等愧哟,這種情況下只需在用戶登錄時注冊相應(yīng)的賬號就行了奥吩,如圖3:
我這里是與JS進(jìn)行交互,后臺推送把Passport作為賬號來進(jìn)行推送蕊梧,由圖中可以看出霞赫,只需要setAccount方法和delAccount方法,因?yàn)樵O(shè)備token已經(jīng)在APPdelegate里面進(jìn)行了注冊肥矢,所以這里不需要再進(jìn)行注冊端衰,還是很方便的;
3.網(wǎng)頁推送:使用信鴿推送的網(wǎng)頁推送測試時甘改,有一個測試預(yù)覽的按鈕旅东,我就被坑到這里了,在此著重強(qiáng)調(diào):測試預(yù)覽和帳號無關(guān)十艾,測試預(yù)覽只是發(fā)給選的測試設(shè)備的token的抵代,即使注冊的賬號里面沒有這個設(shè)備token,你使用測試預(yù)覽時忘嫉,設(shè)備依然會收到消息荤牍。我就在這里就一直在解決為什么賬號下沒有設(shè)備token,設(shè)備還能收到消息這個問題庆冕。所以測試的時候直接點(diǎn)確認(rèn)推送就好康吵,不用測試預(yù)覽。另外访递,在創(chuàng)建通知頁面左側(cè)欄有個查詢賬號狀態(tài)按鈕(圖4)涎才,可以看到當(dāng)前賬號下綁定的設(shè)備token,當(dāng)然一般情況下只有開發(fā)環(huán)境力九,你才能很容易看到token耍铜;
4.自定義提示音:推送消息的提示音可以自定義,查詢到當(dāng)前有兩種實(shí)現(xiàn)方法:一種是使用蘋果自帶的AVFoundation框架中的AVSpeech相關(guān)類跌前,這個方法就是讀文字棕兼,感覺類似于小說app中的人聲朗讀功能,聽起來不那么人性化抵乓,因此這種方法不建議使用伴挚,但在此給出簡單示例(圖5)靶衍;另一種是在項目中放置音頻文件,這里我放的是MA4格式文件(后綴是.m4a)茎芋,據(jù)說蘋果只支持四種格式:Linear PCM颅眶、MA4 (IMA/ADPCM)、μLaw田弥、aLaw涛酗,這里我參考了一篇文章:www.reibang.com/p/87e8cbdb46c9,作者寫的音頻文件的轉(zhuǎn)換過程非常詳細(xì)偷厦,在這里要感謝這篇文章的作者商叹。項目本地放著音頻文件,服務(wù)器推送時消息里面sound的值就寫項目里的音頻文件名稱就行只泼,記得后綴也要放上去剖笙,要全稱(我這里寫的是1112.m4a,圖6)请唱;
這些準(zhǔn)備好弥咪,就可以測試鈴聲推送了。
5.設(shè)置badge:在推送時十绑,信鴿這邊的badge的值設(shè)置為0時聚至,默認(rèn)是不變更角標(biāo)值的,因?yàn)楫?dāng)設(shè)置角標(biāo)為0時孽惰,消息中不會傳badge這個字段,角標(biāo)值不變鸥印;關(guān)于角標(biāo)我們這里要求只要在前臺角標(biāo)即為0勋功,即不顯示角標(biāo),而在iOS10 以上的系統(tǒng)發(fā)現(xiàn)程序在前臺時接收推送消息時直接彈出通知欄库说,并沒有走回調(diào)方法狂鞋,因此修改了消息聲音、角標(biāo)潜的、內(nèi)容的那個方法骚揍,把角標(biāo)直接置為了0(圖7);
以上就是我所踩到的坑啰挪,如果有錯誤信不,歡迎大家指正。