码迷,mamicode.com
首页 > 其他好文 > 详细

极光推送封装

时间:2015-07-29 22:56:03      阅读:494      评论:0      收藏:0      [点我收藏+]

标签:

  1. //

    //  JGPushHelp.h

    //  WYB

    //

    //  Created by 淘元乐 on 15/7/29.

    //  Copyright (c) 2015年 China Model. All rights reserved.

    //

     

    #import <Foundation/Foundation.h>

    #import <UIKit/UIKit.h>

    @interface JGPushHelp : NSObject

    // 在应用启动的时候调用

    + (void)setupWithOptions:(NSDictionary *)launchOptions;

     

    // 在appdelegate注册设备处调用

    + (void)registerDeviceToken:(NSData *)deviceToken;

     

    // ios7以后,才有completion,否则传nil

    + (void)handleRemoteNotification:(NSDictionary *)userInfo completion:(void (^)(UIBackgroundFetchResult))completion;

     

    // 显示本地通知在最前面

    + (void)showLocalNotificationAtFront:(UILocalNotification *)notification;

    @end

     

     

     

     

     

     

     

     

     

     

    //

    //  JGPushHelp.m

    //  WYB

    //

    //  Created by 淘元乐 on 15/7/29.

    //  Copyright (c) 2015年 China Model. All rights reserved.

    //

     

    #import "JGPushHelp.h"

    #import "APService.h"

    @implementation JGPushHelp

     

    + (void)setupWithOptions:(NSDictionary *)launchOptions {

        // Required

    #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1

        // ios8之后可以自定义category

        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

     

            

            // 可以添加自定义categories

            [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |

                                                           UIUserNotificationTypeSound |

                                                           UIUserNotificationTypeAlert)

                                               categories:nil];

        } else {

    #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0

            // ios8之前 categories 必须为nil

            [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |

                                                           UIRemoteNotificationTypeSound |

                                                           UIRemoteNotificationTypeAlert)

                                               categories:nil];

    #endif

        }

    #else

        // categories 必须为nil

        [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |

                                                       UIRemoteNotificationTypeSound |

                                                       UIRemoteNotificationTypeAlert)

                                           categories:nil];

    #endif

        

        // Required

        [APService setupWithOption:launchOptions];

        return;  

    }  

     

     

    + (void)registerDeviceToken:(NSData *)deviceToken {

        [APService registerDeviceToken:deviceToken];

        return;

    }

     

    + (void)handleRemoteNotification:(NSDictionary *)userInfo completion:(void (^)(UIBackgroundFetchResult))completion {

        [APService handleRemoteNotification:userInfo];

        

        if (completion) {

            completion(UIBackgroundFetchResultNewData);

        }

        return;

    }

     

    + (void)showLocalNotificationAtFront:(UILocalNotification *)notification {

        [APService showLocalNotificationAtFront:notification identifierKey:nil];

        return;

    }

     

    @end

     

     

  2. //  
  3. //  AppDelegate.m  
  4. //  WYB
  5. //  
  6. // Created by 淘元乐 on 15/7/29.
  7. //  Copyright (c) 2015年 China Model. All rights reserved. 
  8. //  
  9.   
  10. #import "AppDelegate.h"  
  11. #import "JGPushHelp.h"

     

     
  12.   
  13. @interface AppDelegate ()  
  14.   
  15. @end  
  16.   
  17. @implementation AppDelegate  
  18.   
  19.   
  20. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  21.   self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  22.   // Override point for customization after application launch.  
  23.     
  24.   [JGPushHelp setupWithOptions:launchOptions];  
  25.     
  26.   self.window.backgroundColor = [UIColor whiteColor];  
  27.   [self.window makeKeyAndVisible];  
  28.   return YES;  
  29. }  
  30.   
  31. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  32.   [JGPushHelp registerDeviceToken:deviceToken];  
  33.   return;  
  34. }  
  35.   
  36. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {  
  37.   [JGPushHelp handleRemoteNotification:userInfo completion:nil];  
  38.   return;  
  39. }  
  40.   
  41. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0  
  42. // ios7.0以后才有此功能  
  43. - (void)application:(UIApplication *)application didReceiveRemoteNotification  
  44.                    :(NSDictionary *)userInfo fetchCompletionHandler  
  45.                    :(void (^)(UIBackgroundFetchResult))completionHandler {  
  46.   [JGPushHelp handleRemoteNotification:userInfo completion:completionHandler];  
  47.     
  48.   // 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下  
  49.   if (application.applicationState == UIApplicationStateActive) {  
  50.    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收到推送消息"  
  51.                                                    message:userInfo[@"aps"][@"alert"]  
  52.                                                   delegate:nil  
  53.                                          cancelButtonTitle:@"取消"  
  54.                                          otherButtonTitles:@"确定", nil nil];  
  55.     [alert show];  
  56.   }  
  57.   return;  
  58. }  
  59. #endif  
  60.   
  61. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {  
  62.   [JGPushHelp showLocalNotificationAtFront:notification];  
  63.   return;  
  64. }  
  65.   
  66. - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {  
  67.   NSLog(@"Error in registration. Error: %@", err);  
  68. }  
  69.   
  70. - (void)applicationDidBecomeActive:(UIApplication *)application {  
  71.   [application setApplicationIconBadgeNumber:0];  
  72.   return;  
  73. }  
  74.   
  75. @end

极光推送封装

标签:

原文地址:http://www.cnblogs.com/zhuzhushen/p/4687707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!