數據改變世界,關於JPush(極光推送)那些細枝末節的事

iOS不倒,博客不停

JPush的文檔說明挺不錯,非常詳細!為什麼還要寫這篇簡書?主要是為了記錄自己開發過程,也給一些朋友提供一點點幫助.首先是JPush的文檔地址:JPush文檔

數據改變世界,關於JPush(極光推送)那些細枝末節的事

JPush,推送原理

可以看出,JPush iOS Push 包括 2 個部分,APNs 推送(代理)JPush 應用內消息

紅色部分是 APNs 推送,JPush 代理開發者的應用(需要基於開發者提供的應用證書),向蘋果 APNs 服務器推送。由 APNs Server 推送到 iOS 設備上。

藍色部分是 JPush 應用內推送部分,即 App 啟動時,內嵌的 JPush SDK 會開啟長連接到 JPush Server,從而 JPush Server 可以推送消息到 App 裡

APNs 通知

APNs 通知:是指通過向 Apple APNs 服務器發送通知,到達 iOS 設備,由 iOS 系統提供展現的推送。用戶可以通過 IOS 系統的 “設置” >> “通知” 進行設置,開啟或者關閉某一個 App 的推送能力。

JPush iOS SDK 不負責 APNs 通知的展現,只是向 JPush 服務器端上傳 Device Token 信息,JPush 服務器端代理開發者向 Apple APNs 推送通知。

獲取 APNs 推送內容

應用內消息


應用內消息:JPush iOS SDK 提供的應用內消息功能,在 App 在前臺時能夠收到推送下來的消息。App 可使用此功能來做消息下發動作。

此消息不經過 APNs 服務器,完全由 JPush 提供功能支持。

APNs通知與應用內消息對比


如果只需要發送通知,則可以忽略應用內消息的處理。對於兩種消息的代碼處理可以參考API 部分的描述。

JPush API v3 支持同時一次調用同時推送 APNs 通知與 JPush 應用內消息。這在某些應用場景裡是有意義的。

數據改變世界,關於JPush(極光推送)那些細枝末節的事

APNs 通知與應用內消息對比.png

OK,原理了解之後,下面開始集成.

  • 1:下載JPush的SDK:SDK下載地址

  • 2:在JPush平臺註冊應用,這裡的目的:

  • A:交付授權,因為在這裡開發者需要上傳應用的推送開發證書,推送生產證書,這樣JPush平臺就能去蘋果服務器拿去一個推送關鍵字段:DeviceToken,相當於授權碼.
  • B:平臺註冊,還會生成一個:AppKey和一個MasterSecret.這兩個東西相當於一個登陸賬號,一個登陸密碼.這樣生成出來,JPush就能根據MasterSecret.去校驗** AppKey,然後去找綁定在這個 AppKey
    上面的生產,開發證書授權的DeviceToken**去蘋果服務器推送消息.
數據改變世界,關於JPush(極光推送)那些細枝末節的事

JPush平臺創建應用.jpg

生成成產,開發證書

數據改變世界,關於JPush(極光推送)那些細枝末節的事

JPush創建成功.jpg

  • 3 導入SDK

將SDK包解壓,在Xcode中選擇“Add files to 'Your project name'...”,將解壓後的lib子文件夾(包含JPUSHService.h、jpush-ios-x.x.x.a,jcore-ios-x.x.x.a)添加到你的工程目錄中。

添加Framework:

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • libz.tbd (Xcode7以下版本是libz.dylib)
  • AdSupport.framework (獲取IDFA需要;如果不使用IDFA,請不要添加)
  • UserNotifications.framework (Xcode8及以上)
  • libresolv.tbd (JPush 2.2.0及以上版本需要, Xcode7以下版本是libresolv.dylib)

*4:編譯與開啟推送功能

數據改變世界,關於JPush(極光推送)那些細枝末節的事

編譯與開啟推送功能

*5:ATS

數據改變世界,關於JPush(極光推送)那些細枝末節的事

*6:添加頭文件和添加代理

請將以下代碼添加到 AppDelegate.m 引用頭文件的位置。

數據改變世界,關於JPush(極光推送)那些細枝末節的事

  • 7:核心代碼: 添加初始化代碼

添加初始化APNs代碼

請將以下代碼添加到

數據改變世界,關於JPush(極光推送)那些細枝末節的事

添加初始化JPush代碼

數據改變世界,關於JPush(極光推送)那些細枝末節的事

註冊APNs成功並上報DeviceToken

數據改變世界,關於JPush(極光推送)那些細枝末節的事

實現註冊APNs失敗接口(可選)

數據改變世界,關於JPush(極光推送)那些細枝末節的事

添加處理APNs通知回調方法

下面這幾個方法也是核心代碼,這是對通知的回調方法,通知達到之後會調用這下面的方法,所以說也是必須要實現的.JPush考慮很周全,涉及到了各個版本,但是方法太多,要是能一個方法處理完就更好了.

數據改變世界,關於JPush(極光推送)那些細枝末節的事

調用,成功打印:

數據改變世界,關於JPush(極光推送)那些細枝末節的事

程序到這,也就基本集成完畢:

8:還有推送的一些新特性極光新特性地址

數據改變世界,關於JPush(極光推送)那些細枝末節的事

action.jpg

這樣就能給你推送添加操作:

具體代碼:

數據改變世界,關於JPush(極光推送)那些細枝末節的事

iOS 10 想要對這些操作action處理:
數據改變世界,關於JPush(極光推送)那些細枝末節的事

iOS 9 想要對這些操作action處理:

數據改變世界,關於JPush(極光推送)那些細枝末節的事

iOS 8 想要對這些操作action處理:

數據改變世界,關於JPush(極光推送)那些細枝末節的事

上面三個方法還可以對附件:attachment操作處理;

9:這裡還介紹一下關於設置tags和alias


數據改變世界,關於JPush(極光推送)那些細枝末節的事

10:設置Badge

數據改變世界,關於JPush(極光推送)那些細枝末節的事

清空JPush服務器中存儲的badge值,即 [setBadge:0]

+ (void)resetBadge

11:API 用於移除待推送或已在通知中心顯示的推送(支持iOS10,併兼容iOS10以下版本)

數據改變世界,關於JPush(極光推送)那些細枝末節的事

iOS10以上identifier設置為nil,則移除所有在通知中心顯示推送和待推送請求,也可以通過設置identifier.delivered和identifier.identifiers來移除相應在通知中心顯示推送或待推送請求,identifier.identifiers如果設置為nil或空數組則移除相應標誌下所有在通知中心顯示推送或待推送請求;iOS10以下identifier設置為nil,則移除所有推送,identifier.delivered屬性無效,另外可以通過identifier.notificationObj傳入特定推送對象來移除此推送。

12:極光還有下面的功能(因為項目沒有集成,沒有仔細研究):極光響應SDK地址

  • AddNotification: 廣告推送
  • FindNotification: 查詢推送
  • SetLocalNotification: 地理推送
  • clearAllLocalNotification:用於清除所有註冊的通知

花了一週時間學習極光推送,雖然時間有點長,但是對於我自己來說很不錯了,沉下心來慢慢學東西,不管外面iOS多麼多麼慘,但是隻要一天iOS不倒,我還會堅持學習,堅持學


分享到:


相關文章: