极光推送重要方法

原创 2014年11月06日 23:00:22

1.获取apn推送内容,并做响应处理 --服务器向客户端推送

(1)如果 App 状态为未运行,此函数将被调用,如果launchOptions包含UIApplicationLaunchOptionsLocalNotificationKey表示用户点击apn 通知导致app被启动运行;如果不含有对应键值则表示 App 不是因点击apn而被启动,可能为直接点击icon被启动或其他。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// apn 内容获取:NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]

(2)如果 App状态为正在前台或者后台运行,那么此函数将被调用,并且可通过AppDelegate的applicationState是否为UIApplicationStateActive判断程序是否在前台运行。此种情况在此函数中处理

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
// apn内容为userInfo
// 取得 APNs 标准信息内容
    NSDictionary *aps = [userInfo valueForKey:@"aps"];
    NSString *content = [aps valueForKey:@"alert"];//推送显示的内容
    NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //badge数量
    NSString *sound = [aps valueForKey:@"sound"];//播放的声音   
    // 取得自定义字段内容
    NSString *customizeField1 = [userInfo valueForKey:@"customizeField1"];//自定义参数,key是自己定义的
    NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1);
     
    // Required
    [APService handleRemoteNotification:userInfo];

(3)如果是使用 iOS 7 的 Remote Notification 特性那么处理函数需要使用

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler;
// apn内容为userInfo
2.获取应用内推送消息--客户端向服务器推送

获取iOS的推送内容需要在delegate类中注册通知并实现回调方法。

在方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions 加入下面的代码:

Object C 代码
1
2
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];
- (void)networkDidReceiveMessage:(NSNotification *)notification {
    NSDictionary * userInfo = [notification userInfo];
    NSString *content = [userInfo valueForKey:@"content"];
    NSString *extras = [userInfo valueForKey:@"extras"];
    NSString *customizeField1 = [extras valueForKey:@"customizeField1"];//自定义参数,key是自己定义的
 
}
3.setLocalNotification---注册本地通知
+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
                                    alertBody:(NSString *)alertBody
                                        badge:(int)badge
                                  alertAction:(NSString *)alertAction
                                identifierKey:(NSString *)notificationKey
                                     userInfo:(NSDictionary *)userInfo
                                    soundName:(NSString *)soundName;
举例:
[APService setLocalNotification:[NSDate dateWithTimeIntervalSinceNow:100] //本地推送触发的时间,fireDate必须大于当前时间
                      alertBody:@"alert content" //推送弹框的按钮现实的内容(iOS8默认为“打开”,其他默认为“应用”)
                          badge:1//应用角标的数字,如果不需要改变角标传-1
                    alertAction:@"buttonText"//本地推送需要显示的内容
                  identifierKey:@"identifierKey"//本地推送标识符
                       userInfo:nil//可用来标识推送和增加附加信息
                      soundName:nil];//本地通知声音名称,空为默认声音
4. showLocalNOtificationAtFront---API用来在APP前台运行时,仍然将通知显示出来。(样式为UIAlertView)
+ (void)showLocalNotificationAtFront:(UILocalNotification *)notification
                       identifierKey:(NSString *)notificationKey;

API必须放在 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification(AppDelegate.m) 苹果的回调函数下。

  • notification         当前触发的UILocalNotification  
  • notificationKey   过滤不需要前台显示的通知。只有notificationKey标示符的通知才会在前台显示。如果需要全部都显示,该参数传nil。

举例:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [APService showLocalNotificationAtFront:notification identifierKey:@"identifierKey"]; 
}

5.findLocalNOtificationWithIdentifier ---API 用于获取自定义的identifierKey标示符的UILocationNotification对象

+ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey;
  •  notificationKey  获取通知对象的标示符
  • API返回数组,包含所有和identifierKey匹配的LocalNotification对象,如果没找到,则为一个空的数组对象。
如:
NSArray *LocalNotifications = [APService findLocalNotificationWithIdentifier:@"identifierKey"];
6.deleteLocalNotification---删除指定的LocalNotification对象
+ (void)deleteLocalNotification:(UILocalNotification *)localNotification;
7.deleteLocalNotificationWithIdentifierKey--------删除指定所有identifierKey标示符的通知对象
举例:[APService deleteLocalNotificationWithIdentifierKey:@"identifierKey"]; 
8.clearAllLocalNotification----清除所有注册的通知
举例:
[APService clearAllLocalNotifications];
补充功能:
1.如何关闭 APN  推送?

关闭推送有以下两种方式关闭:

1.在iOS系统设置的通知设置中更改对应app的推送设置(推荐);

2.在代码中调用 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

对应以上关闭方式的重新打开推送方法:

1.在iOS系统设置的通知设置中修改对应app的推送设置;

2.在代码中重新调用 [APService registerForRemoteNotificationTypes:];



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ios集成极光推送的一些坑点及详解

一、设置badge(角标)     [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];     [JPUSHSer...

极光推送的使用方法

#import "AppDelegate.h" #import "APService.h" @interface AppDelegate () @end @implementation...
  • WiKi_Su
  • WiKi_Su
  • 2015年05月23日 14:44
  • 1695

Unity3D-使用自带的LocalNotification推送后,Icon上的Badge Number数量消除不掉

本地推送我是这样写的: LocalNotification localNotification = new LocalNotification(); localNotification.fire...
  • pz789as
  • pz789as
  • 2017年02月09日 17:39
  • 1039

极光推送demo测试流程,测试过程中可能遇到的问题和解决方法

创建开发证书,创建描述文件,极光推送页面设置,Xcode工程设置,真机测试 步骤1:创建开发证书 .登陆 https://developer.apple.com进入开发者中心 ...

使用极光推送的方法

有这么一种情况就是所有的app都会有大量的用户,但是当需要给用户发送一条信息的时候,就会出现问题,又不能一个用户一个用户的发送信息,这样成本太高而切时间上也是不够的,所以今天给大家介绍一下推送消息的软...

极光推送的简单实现方法

极光推送的简单实现方法1第一步 导入其jar包和so文件这点不再详解, 但是要注意的一点就是: 个人感觉极光的demo还是有些地方需要改进的, 不建议使用,但是里面的代码是需要我们自己拿的, 我...
  • a_Chaon
  • a_Chaon
  • 2016年07月04日 18:02
  • 1411

极光推送使用方法介绍

极光推送使用方法: 1.在极光推送上注册并新建应用,包名自定义,以com.xxx命名。 2.下载demo。 3.将下载好的demo解压并将文件中lib文件夹的所有文件复制到自己的工程libs文件夹中(...

极光推送 - 关于一个项目多个key的方法

“深入浅出,人人都是程序员”用过极光推送api的都知道,极光规定一个key对应一个包,如图所示 分别申请了2个key这是线上版本的key 这是用于测试的key 申请完之后,我们第一反应是接下来是...

Android极光推送手工整合到项目中的方法

1.在我们的eclipse中新建一个Android项目2.首先去极光推送官网创建一个应用1.注意这个包名一定要和我们Android项目中的AndroidManifest.xml文件中的包名一致 2.创...

极光推送Push 标签、别名的使用 ,集成过程中遇到的问题及结局方法

(一)首先解决一下大家查看极光推送官方文档 集成极光混乱的问题: 1、当然要打开极光推送文档里面的客户端SDK继承指南喽,首先会告诉你什么是极光推送,极光推送的特点,以及极光推送SDK,相信...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:极光推送重要方法
举报原因:
原因补充:

(最多只允许输入30个字)