[一句秒懂]極光推送(激光)

  1. 學習連接ios

    http://docs.jpush.io/guideline/ios_guide/ app

  2. 詳細步驟:框架

    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.

建立並配置PushConfig.plist文件有兩種方式:

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:程序在沒有運行的狀況下,也是能夠接受通知的,

相關文章
相關標籤/搜索