iOS 各種狀態(tài)下消息推送的處理

前言

最近在做類似微信公眾號消息的功能哄芜,由于我們的即時(shí)聊天是集成了環(huán)信诗轻,環(huán)信在群推上有欠缺,于是后端的小伙伴決定用極光完成公眾號消息的推送个榕。這就尷尬了篡石,即時(shí)聊天以及UI集成了環(huán)信,消息推送用的極光西采。

過程

極光推送凰萨,只是對蘋果官方推送(apns)的進(jìn)一步封裝,實(shí)際上也是走apns械馆。
首先說下app的狀態(tài)胖眷,詳情可參考 這篇文章
Not running:
應(yīng)用還沒有啟動(dòng),或者應(yīng)用正在運(yùn)行但是途中被系統(tǒng)停止霹崎。
** Inactive:
當(dāng)前應(yīng)用正在前臺運(yùn)行珊搀,但是并不接收事件,Inactive一般是Active與其他狀態(tài)切換的過渡狀態(tài)尾菇,一般很短境析,故做消息推送時(shí)我是忽略的。
** Active
:
當(dāng)前應(yīng)用正在前臺運(yùn)行派诬,并且接收事件劳淆。
Background:
應(yīng)用處在后臺,并且還在執(zhí)行代碼默赂。應(yīng)用進(jìn)入后臺后沛鸵,會(huì)短暫停留在此狀態(tài),大概十分鐘后會(huì)進(jìn)入Suspended狀態(tài)。
** Suspended**:
應(yīng)用處在后臺曲掰,并且已停止執(zhí)行代碼疾捍。

Not running狀態(tài)下收到apns,點(diǎn)擊通知欄進(jìn)入程序栏妖,會(huì)調(diào)用-(void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions這個(gè)方法乱豆,并且會(huì)把通知消息的數(shù)據(jù)放在launchOptions里;而點(diǎn)擊應(yīng)用圖標(biāo)進(jìn)入程序雖然也調(diào)用上面方法吊趾,但并不會(huì)傳遞消息數(shù)據(jù)咙鞍,launchOptions為空。

在** Active**狀態(tài)下趾徽,收到推送會(huì)調(diào)用
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
或 者 -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler,消息數(shù)據(jù)在userInfo中续滋;

Background狀態(tài)下,可參照極光這篇文檔

開啟Remote notifications.png

開啟Remote notifications孵奶,并在推送消息中附加content-available:true 的字段疲酌,收到消息時(shí)便會(huì)調(diào)用-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHa,雖然官方文檔只說了在上面這個(gè)方法調(diào)用,經(jīng)實(shí)測也會(huì)調(diào)用-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)user

當(dāng)然iOS 7后的最好用didReceiveRemoteNotification:fetchCompletion Handler:,畢竟是蘋果官方推薦用的了袁。

在** Suspended狀態(tài)下朗恳,收到apns,系統(tǒng)會(huì)暫時(shí)將app切換回 Background狀態(tài)载绿,給用戶大概幾分鐘時(shí)間處理相關(guān)數(shù)據(jù)粥诫,同樣走上述Background**狀態(tài)流程。

針對我們這個(gè)公眾號的需求崭庸,應(yīng)用處于前臺和后臺的情況下怀浆,都可以滿足,但是在應(yīng)用未打開的情況下怕享,直接打開應(yīng)用圖標(biāo)無法獲取推送消息执赡,點(diǎn)擊通知欄,也只能通過launchOptions獲取被點(diǎn)擊的那個(gè)消息函筋;而且應(yīng)用長期處于后臺沙合,當(dāng)系統(tǒng)內(nèi)存吃緊時(shí),系統(tǒng)會(huì)把應(yīng)用殺掉跌帐。所以針對這種情況首懈,最好在app啟動(dòng)時(shí)調(diào)接口檢查是否有離線消息,這樣就不會(huì)有消息遺漏了谨敛。

另外究履,還有一點(diǎn)要補(bǔ)充,遠(yuǎn)程推送消息一般有兩種佣盒,分別是通知消息自定義消息挎袜,自定義消息是只能在前臺收到的顽聂,只有通知消息才能前后臺都能收到肥惭。

結(jié)束

學(xué)習(xí)之路盯仪,與君共勉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜜葱,一起剝皮案震驚了整個(gè)濱河市全景,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牵囤,老刑警劉巖爸黄,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異揭鳞,居然都是意外死亡炕贵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門野崇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來称开,“玉大人,你說我怎么就攤上這事乓梨”詈洌” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵扶镀,是天一觀的道長蕴侣。 經(jīng)常有香客問我,道長臭觉,這世上最難降的妖魔是什么昆雀? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蝠筑,結(jié)果婚禮上忆肾,老公的妹妹穿的比我還像新娘。我一直安慰自己菱肖,他們只是感情好客冈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稳强,像睡著了一般场仲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上退疫,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天渠缕,我揣著相機(jī)與錄音,去河邊找鬼褒繁。 笑死翰蠢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的型宝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼遭笋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了徒探?” 一聲冷哼從身側(cè)響起瓦呼,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎测暗,沒想到半個(gè)月后央串,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碗啄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年质和,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚字。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侦另,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尉共,到底是詐尸還是另有隱情褒傅,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布袄友,位于F島的核電站殿托,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剧蚣。R本人自食惡果不足惜支竹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸠按。 院中可真熱鬧礼搁,春花似錦、人聲如沸目尖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑟曲。三九已至饮戳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洞拨,已是汗流浹背扯罐。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烦衣,地道東北人歹河。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓掩浙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秸歧。 傳聞我的和親對象是個(gè)殘疾皇子厨姚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐寥茫,SD...
    Isspace閱讀 6,719評論 10 16
  • 不同版本極光推送SDK集成各有差異,集成時(shí)一定要注意版本號矾麻,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時(shí)宜閱讀 7,867評論 37 170
  • 推送通知 注意:這里說的推送通知跟NSNotification有所區(qū)別 NSNotification是抽象的纱耻,不可...
    iOS開發(fā)攻城獅閱讀 4,229評論 1 13
  • 概述 在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài),如果其他應(yīng)用此刻發(fā)生了一些用戶感興趣的那么通過通知...
    莫離_焱閱讀 6,515評論 1 8
  • 推送通知注意:這里說的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的险耀,不可見的...
    醉葉惜秋閱讀 1,515評論 0 3