關於推送的角標的設置


1.下面是極光文檔上面寫到的,好多同學並未好好的查看(下面我認為是角標相關的設置)

    * @abstract 設置角標(到服務器)

 *

 * @param value 新的值. 會覆蓋服務器上保存的值(這個用戶)

 *

 * @discussion 本接口不會改變應用本地的角標值.

 * 本地仍須調用 UIApplication:setApplicationIconBadgeNumber 函數來設置腳標.

 *

 * 本接口用於配合 JPush 提供的服務器端角標功能.

 * 該功能解決的問題是, 服務器端推送 APNs 時, 並不知道客戶端原來已經存在的角標是多少, 指定一個固定的數字不太合理.

 *

 * JPush 服務器端腳標功能提供:

 *

 * - 通過本 API 把當前客戶端(當前這個用戶的) 的實際 badge 設置到服務器端保存起來;

 * - 調用服務器端 API 發 APNs 時(通常這個調用是批量針對大量用戶),

 *   使用 "+1" 的語義, 來表達需要基於目標用戶實際的 badge 值(保存的) +1 來下發通知時帶上新的 badge 值;

 */

+ (BOOL)setBadge:(NSInteger)value;(告訴極光我們app下次推送的角標基數)

 

+ (BOOL)setBadge:(NSInteger)value;

 

/*!

 * @abstract 重置腳標(為0)

 *

 * @discussion 相當於 [setBadge:0] 的效果.

 * 參考 [JPUSHService setBadge:] 說明來理解其作用.

 */

+ (void)resetBadge;

 

//這個我認為也是很重要的

/*!

 * @abstract 關閉日志

 *

 * @discussion 關於日志級別的說明, 參考 [JPUSHService setDebugMode]

 *

 * 雖說是關閉日志, 但還是會打印 Warning, Error 日志. 這二種日志級別, 在程序運行正常時, 不應有打印輸出.

 *

 * 建議在發布的版本里, 調用此接口, 關閉掉日志打印.

 */

+ (void)setLogOFF;(發布時記得關閉極光打印log的功能)

2.一般小公司的App都會采用比較偷懶的設置角標的方式

就是一點擊app進入的時候,就回包通知欄的通知全部清空主要分三個步驟

一般是在這個方法里面

1.[application setApplicationBadgeNunber:0];(清空app的角標)

2.[application cancelLocalNotifcations];(清空通知欄的所有的通知)

3.[JPUSHService resetBadge];(通知極光的服務器角標清空了)

3.如果是大點點的公司就得好好的分析角標的變化過程了

這是我粗略的分析了角標的分析流程

當然這只是給大家一個分析的思路(不同的app還是要根據自己公司的產品的想法來的),如果很亂的話,不妨想我一樣畫一個流程圖

大致考慮的點就是:

1:程序在前台的時候app的角標是不是應該和極光的保持一致

2. 如果是程序的消息二級界面(一般就如此界面的時候這個分類下的消息都相當與已讀的狀態),如果這時候來的一條消息,要判斷是不是此分類下的界面(如果是相當於來的推送消息已經讀過了,如果不是這個類型的分類下面,任然是去增加角標)

3.后台進入的時候,判斷分類的消息是不是都是已讀的狀態,如果不是就角標進行-1 ,通知極光-1 通知后台此分類-1即可(當然自己的分類未讀個數的計數器還是該加加該減減)

這種實現的難度就是要判斷是不是在分類的二級列表下面

建議人力較少的公司直接點擊分類中的某個詳情界面是,才相當於查看了這條消息

還要考慮的是極光的后台有的時候會掛掉,我們的app必須有角標的自動修復機制,不要影響用戶的體驗

關於前台后台以及點擊通知欄直接進入的狀況

點擊通知欄進入會走InActive的狀態

前台和后台就很好判斷了

這里借鑒了某位大神哥的看法(多謝大神分享)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM