可以看出,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 應用內消息。這在某些應用場景裡是有意義的。
OK,原理了解之後,下面開始集成.
- 1:下載JPush的SDK
- 2:在JPush平臺註冊應用,這裡的目的:
- A:交付授權,因為在這裡開發者需要上傳應用的推送開發證書,推送生產證書,這樣JPush平臺就能去蘋果服務器拿去一個推送關鍵字段:DeviceToken,相當於授權碼.
- B:平臺註冊,還會生成一個:AppKey和一個MasterSecret.這兩個東西相當於一個登陸賬號,一個登陸密碼.這樣生成出來,JPush就能根據MasterSecret.去校驗** AppKey,然後去找綁定在這個 AppKey上面的生產,開發證書授權的DeviceToken**去蘋果服務器推送消息.
- 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:編譯與開啟推送功能
5:ATS
6:添加頭文件和添加代理
請將以下代碼添加到 AppDelegate.m 引用頭文件的位置。
- 7:核心代碼: 添加初始化代碼