极光推送封装

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

极光推送封装的相关文章

极光推送的封装

集成步骤不说了,自己看文档吧:极光推送iOS文档 直接上代码了: #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface JPushManager : NSObject +(JPushManager *)shareJPushManager; // 在应用启动的时候调用 - (void)cdm_setupWithOption:(NSDictionary *)launchingOption appKey:

iOS: 极光推送

之前做过环信和友盟的推送,照着官方文档集成其实挺简单的,今天公司需要,特地做了一下极光推送.不用不知道,原来极光推送集成如此简单,不得不说说了. 当然做推送钱需要做一些准备工作了,就是推送必须的p12推送证书:开发环境(开发时测试需要的推送证书).生产环境(发布到AppStore时需要的推送证书),因为xcode已经升级到了7.0以上,所以一些真机测试的配置文件证书就不需要自己手动去创建了,只要有Apple ID,真机测试时,就能自动生成,免费测试: 制作证书的过程就不啰嗦了,详细看官方文档或者

Qt通过极光推送向app推送消息

简介 最近在做个项目,当客服端收到防盗的消息通知时向手机app推送一个消息,告知有防盗报警.这么小的功能没必要自己写个推送端,极光推送免费而且推送的成功率高,已经能满足我们的需求了. 极光推送的文档大家可以到极光推送的官网查看(http://docs.jiguang.cn/),由于我们这是是使用Qt C++开发的极光推送并没有提供c++的封装,这里我们选择rest API的方式推送,rest API的推送方式的demo以及json格式在http://docs.jiguang.cn/server/

使用极光推送实现分组发送和服务端集成

推送功能在手机应用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云.个推.极光等. 极光推送正是一个整合了Android推送.iOS推送的统一推送服务平台.下面讲解一下如何使用极光实现消息推送应用,并重点讲解一下如何实现向分组发送消息及推送服务端和自身应用集成,具体实现过程如下: 目录: 一.注册应用 二.环境搭建 三.Android开发,实

【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- 服务器端主动性 : 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; -- 数据实时性 : 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; -- 基本原理 : 使客户端实时获取服务器端消息,

看了极光推送技术原理的几点思考

看了极光推送技术原理的几点思考 分类: android2012-11-26 20:50 16586人阅读 评论(18) 收藏 举报 目录(?)[+] 移动互联网应用现状 因为手机平台本身.电量.网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端. 为了解决数据同步的问题,在手机平台上,常用的方法有2种.一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TC

【android极光推送】—从客户端到后台,一文通吃

前记 推送原理浅析 平台说明 概念解释 推送的三种实现方式 客户端直接向推送服务方发送Http请求 项目服务器通过Http转发推送请求至推送服务方 项目服务端使用SDK进行功能集成 关于推送的种类概述 android客户端初步实现 集成SDK说明 集成步骤 1下载官方提供的SDK集成包 2手动导入SDK 3在极光的官网创建一个应用 4编写一个MyApplication类初始化SDK 5配置 AndroidManifestxml wampServer服务端配置 配置推送SDK 通过composer

Android客户端与PHP服务端通信(四)---极光推送示例工程分析

概述 上一节,描述了注册极光推送并使用其例子的方法,这一节准备研究一下示例工程的框架,为移植它做准备. 分析例程源码 首先分析一下例程的源码结构,建议对照着JPUSH的官方文档(http://docs.jpush.io/)分析,我就是这样做的. 注册应用后,下载的示例工程结构如下, ExampleApplication.java:该类为应用程序定制了一个Application类,因为调用JPush的SDK时,需要调用JPush提供的init()函数API,而按照官方文档的说明"init 只需要在

Ionic项目中使用极光推送-android

对于Ionic项目中使用消息推送服务,Ionic官方提供了ngCordova项目,这个里面的提供了用angularjs封装好的消息推送服务(官方文档),使用的是GitHub上的 PushPlugin 插件,也有相关的实现实例:GitHub地址 ,但是使用的是Google的GCM消息推送服务,一些网络原因,国内GCM可能不怎么好用(自己也没有试可不可以). 于是选择国内的消息推送服务,主要有:百度云推送,腾讯信鸽,极光推送,yunba 等等,其中只有极光推送官方提供了phonegap/cordov