極光推送集成(自定義消息)

圖片發(fā)自簡書App


寫在前面:

最近公司的項目需要集成遠程推送溪椎,由于人事變動氛改,以及公司以前沒把推送重視起來稍刀,導(dǎo)致推送的代碼已經(jīng)年久失修了撩独,根本不能用了, 公司甚至把極光推送的賬號都給忘記了账月。開始本著能修改好就修改好, 不要大動综膀,可是修改了一天卻發(fā)現(xiàn)sdk已經(jīng)很老了, 很多方法都不能用了局齿,更新sdk后各種問題, 最后一咬牙剧劝,干脆把極光推送全部從工程中移除。重新集成抓歼。

極光推送的文檔寫的還是比較詳細的讥此,而且只有一個.a文件和一個點.h文件拢锹,你可以用cocoapod集成, 也可以直接拉到工程里萄喳, 都是很方便的卒稳。也有相應(yīng)的視頻教程, 對于集成極光推送而言(指的是能收到推送)他巨, 除了生成推送證書比較麻煩之外展哭,其他的都很簡單。 詳細教程可以參考極光推送官方文檔和視頻介紹闻蛀。

http://docs.jiguang.cn極光推送官方文檔

在本篇文章里我主要介紹下自定義消息和APNs消息的使用匪傍,如何在進程被殺掉的情況下獲取推送內(nèi)容。


準備資料

極光推送SDK Version:v2.1.9 (最新的, 兼容iOS10)

APP Version:8.0


使用場景

在使用app的時候觉痛,肯定有很多用戶都會雙擊Home鍵役衡, 然后劃掉進程或者你按下Home鍵, 退到后臺薪棒, 假如有一天時間沒有使用手蝎, 這兩種情況也都可以收到推送(好像說的是廢話一樣),但是俐芯,這時如果你收到推送棵介, 而且收到的不只是一條推送。此時你點擊推送過來的橫幅吧史,或者通知欄的橫幅邮辽,此時會走?

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{} 方法

收到推送

你此時只能獲取你點擊的這一條的推送的內(nèi)容。 那么問題來了贸营, 如果用戶此時不點擊推送的內(nèi)容吨述, 而是直接點擊icon啟動程序, 根本不會走

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}方法,?

你也獲取不到推送的內(nèi)容. 在這種情況下揣云,極光的自定義消息就派上用場了冰啃。

自定義消息和APNs的區(qū)別:

極光的自定義消息是應(yīng)用程序必須是在前臺的狀態(tài)下,才會收到阎毅, 如果處于后臺焚刚, 極光會把此條消息保存為離線消息(離線的時長是可以設(shè)置的,這個由后臺來設(shè)置)净薛,等你回到前臺時,才會收到自定義消息。自定義消息是不會有推送的橫幅效果雌团。

APNs消息, 只有退到后臺士聪,才會有推送的橫幅效果锦援,如果你在前臺, 也能收到消息,但是不會有橫幅的效果剥悟。

實現(xiàn)思路:

對于一條推送区岗,讓后臺進行自定義消息和APNs消息同時推送 (對于客戶端而言,這是兩條消息(APNs消息和自定義消息)叮称,但是對于服務(wù)端而言這是一條消息(如果后臺告訴你藐鹤,不能做瓤檐, 那肯定是不想麻煩娱节, 因為安卓使用遠程推送消息,在iOS這邊叫APNs消息是完全可以實現(xiàn)所有需求的谴古, 但是由于iOS系統(tǒng)本身的局限性悄窃,我們無法實現(xiàn)),自定義消息和APNs消息擁有同一個_j_msgid)轧抗,此時你需要使用APNs消息來進行橫幅彈窗瞬测, 當用戶點擊某個橫幅時月趟, 對該條消息下進行處理。使用自定義消息類進行數(shù)據(jù)本地化孝宗。

極光推送的通知

要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions里面進行通知注冊

收到自定義消息

由于極光推送的自定義消息和APNs消息的數(shù)據(jù)格式是不一樣的因妇,需要分別處理猿诸。


APNs消息
自定義消息

對于極光推送的文章介紹也有很多了梳虽,都比較詳細, 但是對于我遇到的這個問題窜觉,找了好久才找到解決方案, 所以記錄下來, 分享一下,也許可以幫助其他遇到此問題的人北专。 文章主要介紹了使用自定義消息進行數(shù)據(jù)持久化的解決思路, 如果你有其它的見解或者文章有錯誤的地方特咆,歡迎留言斧正录粱。


補充: iOS 10以上的系統(tǒng), 當App在前臺時, 收到APNs通知時也會彈出一個橫幅

iOS 10 原生版本

```

@protocol UNUserNotificationCenterDelegate@optional

//在前臺獲取通知

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler;

//點擊通知進入

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler ;

@end

```

極光推送版本

```

@protocol JPUSHRegisterDelegate/*

* @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]

* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用戶通知中心

* @param notification 前臺得到的的通知對象

* @param completionHandler 該callback中的options 請使用UNNotificationPresentationOptions

*/

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler;

/*

* @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]

* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用戶通知中心

* @param response 通知響應(yīng)對象

* @param completionHandler

*/

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;

@end

```


注意:

這個方法在iOS 10 以后被廢棄了

這個方法是iOS 7才有的, 按照目前的市場來看, 上面的那個方法完全可以廢棄, 直接使用下面這個方法來接收通知

坑: iOS 11以前, 當App在前臺的時候, 會走下面??這個方法, 點金通知欄的通知進入, 也會走下面這個方法.?

但是在iOS 11 的情況下, 當手機在前臺時, 接收到通知下面這個方法不會執(zhí)行(已被坑吐血了), ?只有點擊通知欄的通知時, 才會執(zhí)行, 所以, 如果要在這個方法里面做跳轉(zhuǎn)的操作, 這里需要判斷一下版本.


if UIApplication.shared.applicationState == .inactive {

//跳轉(zhuǎn)

}else if (UIApplication.shared.applicationState == .active) {

if #available(iOS 11.0, *) {

//跳轉(zhuǎn)

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菜职,一起剝皮案震驚了整個濱河市旗闽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嫡意,老刑警劉巖捣辆,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旧巾,居然都是意外死亡忍些,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門廓握,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隙券,你說我怎么就攤上這事∈嵌” “怎么了拟枚?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恩溅。 經(jīng)常有香客問我,道長蜒滩,這世上最難降的妖魔是什么奶稠? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮竹握,結(jié)果婚禮上辆飘,老公的妹妹穿的比我還像新娘。我一直安慰自己蜈项,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布侥衬。 她就那樣靜靜地躺著常侦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聋亡。 梳的紋絲不亂的頭發(fā)上际乘,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音罪塔,去河邊找鬼。 笑死瘩缆,一個胖子當著我的面吹牛佃蚜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谐算,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斤儿!你這毒婦竟也來了恐锦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤陕贮,失蹤者是張志新(化名)和其女友劉穎馅闽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體福也,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年峦甩,在試婚紗的時候發(fā)現(xiàn)自己被綠了现喳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡冰单,死狀恐怖灸促,靈堂內(nèi)的尸體忽然破棺而出涵卵,到底是詐尸還是另有隱情荒叼,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布坏晦,位于F島的核電站嫁乘,受9級特大地震影響昆婿,放射性物質(zhì)發(fā)生泄漏亦渗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一多律、第九天 我趴在偏房一處隱蔽的房頂上張望搂蜓。 院中可真熱鬧,春花似錦帮碰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至傻唾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伪煤,已是汗流浹背凛辣。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝙砌,地道東北人阳堕。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像前普,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拭卿,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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