運(yùn)用Notification Service Extension和App Groups統(tǒng)計(jì)iOS推送送達(dá)率

Notification Service Extension

在iOS10以前,想統(tǒng)計(jì)消息送達(dá)率并不準(zhǔn)確,因?yàn)楫?dāng)App無(wú)進(jìn)程的情況下無(wú)法捕獲彈框操作,只能統(tǒng)計(jì)有進(jìn)程情況下的彈框點(diǎn)擊率,這無(wú)法滿足運(yùn)營(yíng)同事工作的開(kāi)展。但iOS10開(kāi)始,蘋(píng)果推出了“Notification Service Extension”消息擴(kuò)展類(以下簡(jiǎn)稱“消息擴(kuò)展”),開(kāi)發(fā)者可以監(jiān)聽(tīng)并修改遠(yuǎn)程推送的彈框消息(僅支持遠(yuǎn)程推送)。消息擴(kuò)展是Xcode8中加入眾多extension的其中一種,實(shí)際為App提供額外功能,供iOS操作系統(tǒng)調(diào)用,開(kāi)發(fā)者可在此擴(kuò)展中添加自己的代碼,因?yàn)橛刹僮飨到y(tǒng)調(diào)用,所以可以實(shí)現(xiàn)無(wú)進(jìn)程下執(zhí)行添加的代碼。

下面是消息擴(kuò)展在消息推送中擔(dān)任的角色,APNs 將消息首先推送給 ServiceExtension ,ServiceExtension 處理好數(shù)據(jù)后再展示給用戶彈窗


創(chuàng)建擴(kuò)展Targets

1、在原有項(xiàng)目上new一個(gè)target,如下圖所示

2、創(chuàng)建Notification Service Extension,并填寫(xiě)product name,如下圖所示

3、此時(shí)文件目錄和targets列表會(huì)出現(xiàn)添加的擴(kuò)展,選擇適配的設(shè)備和版本

4、切換target調(diào)試方法:如果出現(xiàn)如圖不出現(xiàn)添加的target,無(wú)法切換的情況,按照下面的步驟,就可以切換target進(jìn)行debug調(diào)試

5、生成的新文件有兩個(gè)方法,在 didReceiveNotificationRequest:withContentHandler: 里面可以處理遠(yuǎn)程推送內(nèi)容,例如修改推送內(nèi)容、下載圖片等,修改遠(yuǎn)程推送內(nèi)容的時(shí)間是有限的(不超過(guò)30S)。如果修改內(nèi)容任務(wù)沒(méi)有完成,系統(tǒng)會(huì)調(diào)用serviceExtensionTimeWillExpire方法,給你提供最后一次提供修改內(nèi)容的機(jī)會(huì)。如果你沒(méi)有修改遠(yuǎn)程推送成功,系統(tǒng)將會(huì)展示遠(yuǎn)程推送最原始的內(nèi)容。這會(huì)出現(xiàn)什么使用場(chǎng)景呢?比如后臺(tái)給用戶單獨(dú)推送的東西不想讓別人捕獲到,那么在后臺(tái)推送的時(shí)候進(jìn)行加密,然后到了客戶端之后再進(jìn)行解密,這樣比較安全。

6、現(xiàn)在我們可以借用第三方遠(yuǎn)程推送工具測(cè)試能否捕捉(工具例如:SmartPush、Pusher等), 切換到擴(kuò)展taget,在didReceiveNotificationRequest:withContentHandler:中打入斷點(diǎn),發(fā)現(xiàn)未執(zhí)行此方法,原因是推送的內(nèi)容中缺少一個(gè)字段“mutable-content:1”?,表示我們會(huì)在接收到通知時(shí)對(duì)內(nèi)容進(jìn)行更改。這樣就走斷點(diǎn)了,我們可以開(kāi)始寫(xiě)我們的代碼了(建議使用原生網(wǎng)絡(luò)請(qǐng)求,免去配置第三方的麻煩)


AppGroups

此時(shí)雖然可以發(fā)送網(wǎng)絡(luò)請(qǐng)求,但消息擴(kuò)展和app的沙盒路徑不同,沒(méi)法將用戶token等信息加到請(qǐng)求參數(shù)里,接下來(lái)就需要共享數(shù)據(jù)。

我們只介紹AppGroups,具體請(qǐng)?jiān)L問(wèn)鏈接:https://blog.csdn.net/shengpeng3344/article/details/52190997

這樣就可以在推送出現(xiàn)時(shí)報(bào)告后臺(tái),實(shí)現(xiàn)精準(zhǔn)統(tǒng)計(jì)送達(dá)率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容