學習連接:ios
詳細步驟:框架
1.進入文檔-JPush推送應用中心:https://www.jpush.cn/common/apps/less
2.建立應用:這一步有兩個兩個證書:一個是開發推送證書和上架應用推送證書,這兩個證書配置後面會詳細講解(容易錯誤地方)ide
3.下載SDK,文檔也說到(將SDK包解壓,在XCode中選擇「Add files to 'Your project name'...」,將解壓後的lib子文件夾(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目錄中。)學習
4.導入必要框架:(fetch
CFNetwork.frameworkui
CoreFoundation.frameworkspa
CoreTelephony.frameworkcode
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Xcode7須要的是libz.tbd;Xcode7如下版本是libz.dylib
)
5.
2.1.0以前版本是經過plist文件配置,這個我就不截圖講解了,只要建立一個plist文件,增長三個字段就能夠了,文檔上有,一鍵copy便可了
可是咱們如今是能夠經過一個方法直接配置的,方法以下:
/*! * @abstract 啓動SDK * * @param launchingOption 啓動參數. * @param appKey 一個JPush 應用必須的,惟一的標識. 請參考 JPush 相關說明文檔來獲取這個標識. * @param channel 發佈渠道. 可選. * @param isProduction 是否生產環境. 若是爲開發狀態,設置爲 NO; 若是爲生產狀態,應改成 YES. * * @discussion 提供SDK啓動必須的參數, 來啓動 SDK. * 此接口必須在 App 啓動時調用, 不然 JPush SDK 將沒法正常工做. */ [JPUSHService setupWithOption:launchOptions appKey:kJPUSHAppKey channel:kJPUSHChannel apsForProduction:isProduction];
5.添加代碼:
2.1.0版本開始,API類名爲JPUSHService,再也不使用原先的APService。
若是用的是Xcode7時,須要在App項目的plist手動加入如下key和值以支持http傳輸:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //能夠添加自定義categories [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { //categories 必須爲nil [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil]; } // Required //如需兼容舊版本的方式,請依舊使用[JPUSHService setupWithOption:launchOptions]方式初始化和同時使用pushConfig.plist文件聲明appKey等配置內容。 [JPUSHService setupWithOption:launchOptions appKey:appKey channel:channel apsForProduction:isProduction]; return YES; }
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [JPUSHService registerDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required,For systems with less than or equal to iOS6 [JPUSHService handleRemoteNotification:userInfo]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { //Optional NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error); }
6.配置這個地方,否則運行就會有問題
7.進入極光中心:https://www.jpush.cn/push/apps/0942889e8d623bf81d7c185a/push/notification/sent/
選擇你的應用-推送-發送通知-完成了(注意只有當你的程序不在前臺的時候纔會顯示通知的哦)
8.配置證書那一塊,我後期會給大家詳解的,保證你會一次,永遠都會的配置證書的哦!關注我博客之後,到時候會及時提醒到你的哦!
9.到時候還給你們一併講解一下本地推送,超簡單超詳細!讓你們在工做當中再也不加班,輕輕鬆鬆開發ios,讓咱們贏取白富美,不在窮屌絲,😄!
10:極光配置成功標誌:
10-1:是發送通知不是自定義信息:以前卡在這裏,一隻收不到通知,害我從頭配置一遍
10-2:在這個方法裏執行,可讓用戶在前臺app中顯示咱們推送的消息
// 在這個方法裏面打印userinfo數據有兩種狀況:
1:當用戶在後臺的時候,咱們發送通知,他點擊通知消息進入咱們app裏面,這時候會掉用下面這個方法,打印userinfo的數據出來,能夠作一些跳轉操做
2:當用戶在前臺的時候,咱們發送通知,可讓用戶看到咱們的信息,可是也是掉用這個方法,打印userinfo的數據的
疑惑點:當用戶在後臺看到咱們推送的通知消息,可是不是從推送消息哪裏進入的話,而是直接從點擊app進去的話,這時候是不會調用下面這個方法,也就不打印數據了,天然只能進入首頁了,也就不存在跳轉不一樣頁面的判斷了
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); // 應用正處理前臺狀態下,不會收到推送消息,所以在此處須要額外處理一下 if (application.applicationState == UIApplicationStateActive) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收到推送消息" message:userInfo[@"aps"][@"alert"] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"肯定", nil]; [alert show]; } }
userInfo--{ "_j_msgid" = 3563975788; aps = { alert = 7; badge = 1; sound = default; }; }
10-3:解決後臺裏面app上右上角badge數量清空的方法
#pragma mark - 設置小紅點,回到後臺就會清空推送消息 - (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; }
10-4:程序在沒有運行的狀況下,也是能夠接受通知的,