99 * Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
1010 */
1111
12- #define JPUSH_VERSION_NUMBER 2.1.8
12+ #define JPUSH_VERSION_NUMBER 2.2.0
1313
1414#import < Foundation/Foundation.h>
1515
1616@class CLRegion;
1717@class UILocalNotification;
18+ @class CLLocation;
19+ @class UNNotificationCategory ;
20+ @class UNNotificationSettings ;
21+ @class UNNotificationRequest ;
22+ @class UNNotification ;
23+ @protocol JPUSHRegisterDelegate;
1824
1925extern NSString *const kJPFNetworkIsConnectingNotification ; // 正在连接中
2026extern NSString *const kJPFNetworkDidSetupNotification ; // 建立连接
2127extern NSString *const kJPFNetworkDidCloseNotification ; // 关闭连接
2228extern NSString *const kJPFNetworkDidRegisterNotification ; // 注册成功
29+ extern NSString *const kJPFNetworkFailedRegisterNotification ; // 注册失败
2330extern NSString *const kJPFNetworkDidLoginNotification ; // 登录成功
2431extern NSString *const kJPFNetworkDidReceiveMessageNotification ; // 收到消息(非APNS)
2532extern NSString *const kJPFServiceErrorNotification ; // 错误提示
2633
27- @class CLLocation;
34+ /* !
35+ * 通知注册实体类
36+ */
37+ @interface JPUSHRegisterEntity : NSObject
38+
39+ /* !
40+ * 支持的类型
41+ * badge,sound,alert
42+ */
43+ @property (nonatomic , assign ) NSInteger types;
44+ /* !
45+ * 注入的类别
46+ * iOS10 UNNotificationCategory
47+ * iOS8-iOS9 UIUserNotificationCategory
48+ */
49+ @property (nonatomic , strong ) NSSet *categories;
50+ @end
51+
52+ /* !
53+ * 进行删除、查找推送实体类
54+ */
55+ @interface JPushNotificationIdentifier : NSObject <NSCopying , NSCoding >
56+
57+ @property (nonatomic , copy ) NSArray <NSString *> *identifiers; // 推送的标识数组
58+ @property (nonatomic , copy ) UILocalNotification *notificationObj NS_DEPRECATED_IOS (4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效
59+ @property (nonatomic , assign ) BOOL delivered NS_AVAILABLE_IOS (10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的
60+ @property (nonatomic , copy ) void (^findCompletionHandler)(NSArray *results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
2861
62+ @end
63+
64+ /* !
65+ * 推送内容实体类
66+ */
67+ @interface JPushNotificationContent : NSObject <NSCopying , NSCoding >
68+
69+ @property (nonatomic , copy ) NSString *title; // 推送标题
70+ @property (nonatomic , copy ) NSString *subtitle; // 推送副标题
71+ @property (nonatomic , copy ) NSString *body; // 推送内容
72+ @property (nonatomic , copy ) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1)
73+ @property (nonatomic , copy ) NSString *action NS_DEPRECATED_IOS (8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效)
74+ @property (nonatomic , copy ) NSString *categoryIdentifier; // 行为分类标识
75+ @property (nonatomic , copy ) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo
76+ @property (nonatomic , copy ) NSString *sound; // 声音名称,不设置则为默认声音
77+ @property (nonatomic , copy ) NSArray *attachments NS_AVAILABLE_IOS (10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
78+ @property (nonatomic , copy ) NSString *threadIdentifier NS_AVAILABLE_IOS (10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
79+ @property (nonatomic , copy ) NSString *launchImageName NS_AVAILABLE_IOS (10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到
80+
81+ @end
82+
83+ /* !
84+ * 推送触发方式实体类
85+ * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
86+ */
87+ @interface JPushNotificationTrigger : NSObject <NSCopying , NSCoding >
88+
89+ @property (nonatomic , assign ) BOOL repeat; // 设置是否重复,默认为NO
90+ @property (nonatomic , copy ) NSDate *fireDate NS_DEPRECATED_IOS (2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效
91+ @property (nonatomic , copy ) CLRegion *region NS_AVAILABLE_IOS (8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权
92+ @property (nonatomic , copy ) NSDateComponents *dateComponents NS_AVAILABLE_IOS (10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II
93+ @property (nonatomic , assign ) NSTimeInterval timeInterval NS_AVAILABLE_IOS (10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III
94+
95+ @end
96+
97+ /* !
98+ * 注册或更新推送实体类
99+ */
100+ @interface JPushNotificationRequest : NSObject <NSCopying , NSCoding >
101+
102+ @property (nonatomic , copy ) NSString *requestIdentifier; // 推送请求标识
103+ @property (nonatomic , copy ) JPushNotificationContent *content; // 设置推送的具体内容
104+ @property (nonatomic , copy ) JPushNotificationTrigger *trigger; // 设置推送的触发方式
105+ @property (nonatomic , copy ) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
106+
107+ @end
29108
30109/* !
31110 * JPush 核心头文件
@@ -77,12 +156,20 @@ extern NSString *const kJPFServiceErrorNotification; // 错误提示
77156 * @abstract 注册要处理的远程通知类型
78157 *
79158 * @param types 通知类型
80- * @param categories
159+ * @param categories 类别组
81160 *
82- * @discussion
83161 */
84162+ (void )registerForRemoteNotificationTypes : (NSUInteger )types
85163 categories : (NSSet *)categories ;
164+ /* !
165+ * @abstract 新版本的注册方法(兼容iOS10)
166+ *
167+ * @param config 注册通知配置
168+ * @param delegate 代理
169+ *
170+ */
171+ + (void )registerForRemoteNotificationConfig : (JPUSHRegisterEntity *)config delegate : (id <JPUSHRegisterDelegate>)delegate ;
172+
86173
87174+ (void )registerDeviceToken : (NSData *)deviceToken ;
88175
@@ -99,14 +186,14 @@ extern NSString *const kJPFServiceErrorNotification; // 错误提示
99186
100187/* !
101188 * 下面的接口是可选的
102- * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:http://docs.jpush.io /client/ios_api/#api-ios)
189+ * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:http://docs.jiguang.cn /client/ios_api/#api-ios)
103190 * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可.
104191 * WARN: 使用block时需要注意循环引用问题
105192 */
106193+ (void ) setTags : (NSSet *)tags
107194 alias : (NSString *)alias
108195callbackSelector : (SEL )cbSelector
109- target : (id )theTarget __attribute__((deprecated(" JPush 2.1.1 版本已过期" )));;
196+ target : (id )theTarget __attribute__((deprecated(" JPush 2.1.1 版本已过期" )));
110197
111198+ (void ) setTags : (NSSet *)tags
112199 alias : (NSString *)alias
@@ -192,6 +279,35 @@ callbackSelector:(SEL)cbSelector
192279// /----------------------------------------------------
193280// / @name Local Notification 本地通知
194281// /----------------------------------------------------
282+ /* !
283+ * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本)
284+ *
285+ * JPush 2.1.9新接口
286+ * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回
287+ * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换
288+ *
289+ */
290+ + (void )addNotification : (JPushNotificationRequest *)request ;
291+
292+ /* !
293+ * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本)
294+ *
295+ * JPush 2.1.9新接口
296+ * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。
297+ * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换
298+ *
299+ */
300+ + (void )removeNotification : (JPushNotificationIdentifier *)identifier ;
301+
302+ /* !
303+ * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本)
304+ *
305+ * JPush 2.1.9新接口
306+ * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
307+ * @discussion 旧的查找推送接口被废弃,使用此接口可以替换
308+ *
309+ */
310+ + (void )findNotification : (JPushNotificationIdentifier *)identifier ;
195311
196312/* !
197313 * @abstract 本地推送,最多支持64个
@@ -204,15 +320,15 @@ callbackSelector:(SEL)cbSelector
204320 * @param userInfo 自定义参数,可以用来标识推送和增加附加信息
205321 * @param soundName 自定义通知声音,设置为nil为默认声音
206322 *
207- * @discussion 最多支持 64 个定义
323+ * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代
208324 */
209325+ (UILocalNotification *)setLocalNotification : (NSDate *)fireDate
210326 alertBody : (NSString *)alertBody
211327 badge : (int )badge
212328 alertAction : (NSString *)alertAction
213329 identifierKey : (NSString *)notificationKey
214330 userInfo : (NSDictionary *)userInfo
215- soundName : (NSString *)soundName ;
331+ soundName : (NSString *)soundName __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
216332
217333/* !
218334 * @abstract 本地推送 (支持 iOS8 新参数)
@@ -221,6 +337,7 @@ callbackSelector:(SEL)cbSelector
221337 * @param region 自定义参数
222338 * @param regionTriggersOnce 自定义参数
223339 * @param category 自定义参数
340+ * @discussion 此方法被[addNotification:]方法取代
224341 */
225342+ (UILocalNotification *)setLocalNotification : (NSDate *)fireDate
226343 alertBody : (NSString *)alertBody
@@ -231,43 +348,47 @@ callbackSelector:(SEL)cbSelector
231348 soundName : (NSString *)soundName
232349 region : (CLRegion *)region
233350 regionTriggersOnce : (BOOL )regionTriggersOnce
234- category : (NSString *)category NS_AVAILABLE_IOS(8_0);
351+ category : (NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__ ((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
235352
236353/* !
237354 * @abstract 前台展示本地推送
238355 *
239356 * @param notification 本地推送对象
240357 * @param notificationKey 需要前台显示的本地推送通知的标示符
241358 *
242- * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。
359+ * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可
243360 */
244361+ (void )showLocalNotificationAtFront : (UILocalNotification *)notification
245- identifierKey : (NSString *)notificationKey ;
362+ identifierKey : (NSString *)notificationKey __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
246363/* !
247364 * @abstract 删除本地推送定义
248365 *
249366 * @param notificationKey 本地推送标示符
250367 * @param myUILocalNotification 本地推送对象
368+ * @discussion 此方法被[removeNotification:]方法取代
251369 */
252- + (void )deleteLocalNotificationWithIdentifierKey : (NSString *)notificationKey ;
370+ + (void )deleteLocalNotificationWithIdentifierKey : (NSString *)notificationKey __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
253371
254372/* !
255373 * @abstract 删除本地推送定义
374+ * @discussion 此方法被[removeNotification:]方法取代
256375 */
257- + (void )deleteLocalNotification : (UILocalNotification *)localNotification ;
376+ + (void )deleteLocalNotification : (UILocalNotification *)localNotification __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
258377
259378/* !
260379 * @abstract 获取指定通知
261380 *
262381 * @param notificationKey 本地推送标示符
263382 * @return 本地推送对象数组, [array count]为0时表示没找到
383+ * @discussion 此方法被[findNotification:]方法取代
264384 */
265- + (NSArray *)findLocalNotificationWithIdentifier : (NSString *)notificationKey ;
385+ + (NSArray *)findLocalNotificationWithIdentifier : (NSString *)notificationKey __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
266386
267387/* !
268388 * @abstract 清除所有本地推送对象
389+ * @discussion 此方法被[removeNotification:]方法取代
269390 */
270- + (void )clearAllLocalNotifications ;
391+ + (void )clearAllLocalNotifications __attribute__((deprecated( " JPush 2.1.9 版本已过期 " ))) ;
271392
272393
273394// /----------------------------------------------------
@@ -313,11 +434,13 @@ callbackSelector:(SEL)cbSelector
313434 *
314435 * JPush 支持根据 registrationID 来进行推送.
315436 * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来.
316- *
437+ * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil.
317438 * 更多的理解请参考 JPush 的文档网站.
318439 */
319440+ (NSString *)registrationID ;
320441
442+ + (void )registrationIDCompletionHandler : (void (^)(int resCode,NSString *registrationID))completionHandler ;
443+
321444/* !
322445 * @abstract 打开日志级别到 Debug
323446 *
@@ -342,5 +465,26 @@ callbackSelector:(SEL)cbSelector
342465 */
343466+ (void )setLogOFF ;
344467
468+ @end
469+
470+ @class UNUserNotificationCenter ;
471+ @class UNNotificationResponse ;
472+
473+ @protocol JPUSHRegisterDelegate <NSObject >
474+
475+ /*
476+ * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]
477+ * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
478+ * @param notification 前台得到的的通知对象
479+ * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions
480+ */
481+ - (void )jpushNotificationCenter : (UNUserNotificationCenter *)center willPresentNotification : (UNNotification *)notification withCompletionHandler : (void (^)(NSInteger options))completionHandler ;
482+ /*
483+ * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]
484+ * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
485+ * @param response 通知响应对象
486+ * @param completionHandler
487+ */
488+ - (void )jpushNotificationCenter : (UNUserNotificationCenter *)center didReceiveNotificationResponse : (UNNotificationResponse *)response withCompletionHandler : (void (^)())completionHandler ;
345489
346490@end
0 commit comments