APNS之push撤銷

產(chǎn)品小姐姐:我們的產(chǎn)品形態(tài)導(dǎo)致我們有很多操作類的用戶Notification, 但是我想吧過期的用戶沒有點擊的push給撤銷掉,來提升用戶體驗,這個...能不能做?

看在小姐姐漂亮的份上 這個活我接了。

開弄。。。。。

這事總的來說流程很簡單,ps: 其實 每個Notification 都是一條消息,那么就必然是有消息ID的。

問題的關(guān)鍵就是 NotificationId的傳遞

? ??一. 服務(wù)端?查閱 APNS的官方文檔,查到在服務(wù)端發(fā)起請求時可以在heder中增加一些字段,

? ? ????1. apns-id,這個其實就是消息的ID,如果不傳會默認(rèn)生成。此字段采用UUID的規(guī)則,如果不是apns會生成新的替換不合規(guī)的

? ? ????2.apns-collapse-id ,這個字段管的是消息折疊(分組),客戶端收到相同apns-collapse-id時 會將前面一個替換掉。適合的場景 比如:關(guān)注類通知,設(shè)置成相同的apns-collapse-id,則客戶端針對"xx關(guān)注了你" 即使收到了10W條也會只顯示一條,提升用戶體驗

? ??二. IOS客戶端?在收到Notification時直接調(diào)用API拿到notificationId, 這里這個id就跟上面兩個服務(wù)端傳的ID有關(guān)系了, 上面的apns-id 和?apns-collapse-id 這兩個是二選一,就是說 如果設(shè)置了?apns-collapse-id 則客戶端取到的notificationId就是apns-collapse-id,如果沒設(shè)置apns-collapse-id 則是apns-id的值。

正常流程

服務(wù)端調(diào)用apns API發(fā)送一個通知Notification,客戶端收到后展示push, 用戶點擊Notification 打開app,對應(yīng)Notification 消失。

想撤銷(隱藏)Notification時

服務(wù)端調(diào)用apns API發(fā)送一個撤銷通知Notification(透傳方式),將上一步的apns-id或者apns-collapse-id帶過去,客戶端收到后拿到notificationId 調(diào)用刪除方法(removeDeliveredNotifications(notificationId))吧Notification刪掉消失,但是吧 通過透傳的方式 我們還要做別的任務(wù)。為了后面的擴展性,可選擇 將?apns-id或者apns-collapse-id?放在自定義的用戶數(shù)據(jù)中,什么花樣就都可以玩了


代碼:只貼關(guān)鍵部分

發(fā)送正常邏輯時:


發(fā)送撤回邏輯時:





文檔:蘋果官方文檔

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

相關(guān)閱讀更多精彩內(nèi)容

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