Skip to content

Commit 4436dbe

Browse files
committed
Merge branch 'dev'
2 parents bf72592 + a8b79ca commit 4436dbe

File tree

6 files changed

+249
-52
lines changed

6 files changed

+249
-52
lines changed

Plugins/JPushBinding.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ public static void isQuit()
340340
void Start()
341341
{
342342
_registerNetworkDidReceiveMessage();
343+
_registerNetworkDidReceivePushNotification();
343344
}
344345

345346
//---------------------------- tags / alias ----------------------------//
@@ -438,6 +439,12 @@ void networkDidReceiveMessageCallBack(String parameter){
438439
_printLocalLog("content:" + content);
439440
}
440441

442+
void networkDidReceivePushNotificationCallBack(String parameter){
443+
JsonData jd = JsonMapper.ToObject(parameter);
444+
String content = (String) jd["content"];
445+
_printLocalLog("content:" + content);
446+
}
447+
441448
//---------------------------- badge ----------------------------//
442449

443450
public static void SetBadge(int badge){
@@ -552,6 +559,9 @@ public static void SetLocation(String latitude, String longitude){
552559
[DllImport("__Internal")]
553560
public static extern void _registerNetworkDidReceiveMessage();
554561

562+
[DllImport("__Internal")]
563+
public static extern void _registerNetworkDidReceivePushNotification();
564+
555565
//--- badge ---//
556566

557567
[DllImport("__Internal")]

Plugins/iOS/JPUSHService.h

100755100644
Lines changed: 160 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,102 @@
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

1925
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
2026
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
2127
extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
2228
extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
29+
extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
2330
extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
2431
extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)
2532
extern 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
108195
callbackSelector:(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

Plugins/iOS/JPushUnityManager.mm

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,14 @@ void _registerNetworkDidReceiveMessage(){
166166
object:nil];
167167
}
168168

169+
void _registerNetworkDidReceivePushNotification(){
170+
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
171+
[defaultCenter addObserver:[JPushUnityInstnce sharedInstance]
172+
selector:@selector(networkDidRecievePushNotification:)
173+
name:@"JPushPluginReceiveNotification"
174+
object:nil];
175+
}
176+
169177

170178
//---------------------------- badge ----------------------------//
171179

@@ -331,14 +339,25 @@ - (void)tagsAliasCallback:(int)iResCode tags:(NSSet*)tags alias:(NSString*)alias
331339
- (void)networkDidRecieveMessage:(NSNotification *)notification {
332340

333341
NSLog(@"已收到消息%@",notification);
334-
if (notification.name==kJPFNetworkDidReceiveMessageNotification&&!notification.userInfo){
335-
336-
NSData *data=APNativeJSONData(notification.userInfo);
337-
NSString *jsonStr=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
342+
if (notification.name == kJPFNetworkDidReceiveMessageNotification && notification.userInfo){
343+
344+
NSData *data = APNativeJSONData(notification.userInfo);
345+
NSString *jsonStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
338346
UnitySendMessage("JPushBinding","networkDidReceiveMessageCallBack",jsonStr.UTF8String);
339347
}
340348
}
341349

350+
- (void)networkDidRecievePushNotification:(NSNotification *)notification {
351+
NSLog(@"已收到通知%@",notification);
352+
if ([notification.name isEqual:@"JPushPluginReceiveNotification"] && notification.object){
353+
354+
NSData *data = APNativeJSONData(notification.object);
355+
NSString *jsonStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
356+
UnitySendMessage("JPushBinding","networkDidReceivePushNotificationCallBack",jsonStr.UTF8String);
357+
}
358+
}
359+
360+
342361
@end
343362

344363

Plugins/iOS/jpush-ios-2.1.8.a

-11.2 MB
Binary file not shown.

Plugins/iOS/jpush-ios-2.2.0.a

12.3 MB
Binary file not shown.

0 commit comments

Comments
 (0)