极光推送重要方法

原创 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...
  • bohezhang
  • bohezhang
  • 2016年08月12日 10:24
  • 14442

极光推送的使用方法

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

Android中常见的消息推送机制

Android消息推送机制研究 1.基于HTTP协议的推送机制 基于HTTP协议的推送机制是一种请求-响应模式,由于HTTP协议是应用层的单工通信模式,因此它很难实现真正意义上的即时推...
  • TheTryndamere
  • TheTryndamere
  • 2016年11月12日 16:56
  • 1010

jPush 极光推送的理解

极光推送是给客户端ios或者android推送消息的工具。 只要在客户端嵌入sdk,同时配合服务器端来使用就可以了。 客户端可以给每个用户注册一个别名alias,和多个标签tag。 到时候,就可...
  • wylb226
  • wylb226
  • 2015年05月26日 14:09
  • 963

极光推送 根据服务器返回内容跳转指定页面

现在的很多应用当中会有消息推送的功能,本地推送就不多说了,大部分的时候都是远程服务器推送,而苹果自身的一套推送机制自己写起来会比较繁琐,大部分的时候会用到一些第三方的,比如 极光推送,友盟推送,百度推...
  • lele9096_bk
  • lele9096_bk
  • 2016年07月07日 11:18
  • 592

iOS开发-- 常见坑(极光推送这只标签别名失败)

这个东西坑了我好几次了 在调用JPush设置别名和标签的方法之前,一定要在登录成功之后。 JPush提供了几种通知的状态 extern NSString *const kJPFNetworkIs...
  • MX_xuanXiao
  • MX_xuanXiao
  • 2016年07月26日 15:34
  • 7458

极光推送的角标问题——让人又爱又恨的小红点

我们现在无论何时拿出自己的手机,解锁后的主页上,总能看到一个个的小红点,仿佛在呐喊:有消息啦,不管重不重要,快点我,快来消除我。甚至曾有人掀起了一波潮流:在微信头像上加上小红点。这很直接很彻底地引发了...
  • jpush
  • jpush
  • 2017年03月17日 10:30
  • 7530

JPush的坑

极光推送的坑, 竟然没有在官方文档中找到解决方案
  • wangjunling888
  • wangjunling888
  • 2017年03月14日 23:31
  • 976

极光推送重要方法

1.获取apn推送内容 (1) 如果 App 状态为未运行,此函数将被调用,如果launchOptions包含UIApplicationLaunchOptionsLocalNotificationK...
  • u013929312
  • u013929312
  • 2014年11月06日 23:00
  • 4607

JPush(极光推送)实战总结

关于JPush极光推送是国内的服务厂商提供的一站式push服务(同时支持iOS、android),后面也加入了即时通讯的能力供app使用。致力于打造简单、可靠、价格有竞争力的服务(简单功能全免费,高级...
  • openglnewbee
  • openglnewbee
  • 2016年03月18日 11:11
  • 17725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:极光推送重要方法
举报原因:
原因补充:

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