JPUSHService.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. /*
  2. * | | | | \ \ / / | | | | / _______|
  3. * | |____| | \ \/ / | |____| | / /
  4. * | |____| | \ / | |____| | | | _____
  5. * | | | | / \ | | | | | | |____ |
  6. * | | | | / /\ \ | | | | \ \______| |
  7. * | | | | /_/ \_\ | | | | \_________|
  8. *
  9. * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
  10. */
  11. #define JPUSH_VERSION_NUMBER 3.0.9
  12. #import <Foundation/Foundation.h>
  13. @class CLRegion;
  14. @class UILocalNotification;
  15. @class CLLocation;
  16. @class UNNotificationCategory;
  17. @class UNNotificationSettings;
  18. @class UNNotificationRequest;
  19. @class UNNotification;
  20. @protocol JPUSHRegisterDelegate;
  21. typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
  22. typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
  23. typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
  24. extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
  25. extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
  26. extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
  27. extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
  28. extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
  29. extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
  30. extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)
  31. extern NSString *const kJPFServiceErrorNotification; // 错误提示
  32. typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
  33. JPAuthorizationOptionNone = 0, // the application may not present any UI upon a notification being received
  34. JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received
  35. JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received
  36. JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received
  37. };
  38. /*!
  39. * 通知注册实体类
  40. */
  41. @interface JPUSHRegisterEntity : NSObject
  42. /*!
  43. * 支持的类型
  44. * badge,sound,alert
  45. */
  46. @property (nonatomic, assign) NSInteger types;
  47. /*!
  48. * 注入的类别
  49. * iOS10 UNNotificationCategory
  50. * iOS8-iOS9 UIUserNotificationCategory
  51. */
  52. @property (nonatomic, strong) NSSet *categories;
  53. @end
  54. /*!
  55. * 进行删除、查找推送实体类
  56. */
  57. @interface JPushNotificationIdentifier : NSObject<NSCopying, NSCoding>
  58. @property (nonatomic, copy) NSArray<NSString *> *identifiers; // 推送的标识数组
  59. @property (nonatomic, copy) UILocalNotification *notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效
  60. @property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的
  61. @property (nonatomic, copy) void (^findCompletionHandler)(NSArray *results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
  62. @end
  63. /*!
  64. * 推送内容实体类
  65. */
  66. @interface JPushNotificationContent : NSObject<NSCopying, NSCoding>
  67. @property (nonatomic, copy) NSString *title; // 推送标题
  68. @property (nonatomic, copy) NSString *subtitle; // 推送副标题
  69. @property (nonatomic, copy) NSString *body; // 推送内容
  70. @property (nonatomic, copy) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1)
  71. @property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效)
  72. @property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识
  73. @property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo
  74. @property (nonatomic, copy) NSString *sound; // 声音名称,不设置则为默认声音
  75. @property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
  76. @property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
  77. @property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到
  78. @end
  79. /*!
  80. * 推送触发方式实体类
  81. * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
  82. */
  83. @interface JPushNotificationTrigger : NSObject<NSCopying, NSCoding>
  84. @property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO
  85. @property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效
  86. @property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权
  87. @property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II
  88. @property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III
  89. @end
  90. /*!
  91. * 注册或更新推送实体类
  92. */
  93. @interface JPushNotificationRequest : NSObject<NSCopying, NSCoding>
  94. @property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识
  95. @property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容
  96. @property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式
  97. @property (nonatomic, copy) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
  98. @end
  99. /*!
  100. * JPush 核心头文件
  101. */
  102. @interface JPUSHService : NSObject
  103. ///----------------------------------------------------
  104. /// @name Setup 启动相关
  105. ///----------------------------------------------------
  106. /*!
  107. * @abstract 启动SDK
  108. *
  109. * @discussion 这是旧版本的启动方法, 依赖于 PushConfig.plist 文件. 建议不要使用, 已经过期.
  110. */
  111. + (void)setupWithOption:(NSDictionary *)launchingOption __attribute__((deprecated("JPush 2.1.0 版本已过期")));
  112. /*!
  113. * @abstract 启动SDK
  114. *
  115. * @param launchingOption 启动参数.
  116. * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
  117. * @param channel 发布渠道. 可选.
  118. * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
  119. * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
  120. * @param advertisingIdentifier 广告标识符(IDFA) 如果不需要使用IDFA,传nil.
  121. *
  122. * @discussion 提供SDK启动必须的参数, 来启动 SDK.
  123. * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
  124. */
  125. + (void)setupWithOption:(NSDictionary *)launchingOption
  126. appKey:(NSString *)appKey
  127. channel:(NSString *)channel
  128. apsForProduction:(BOOL)isProduction;
  129. + (void)setupWithOption:(NSDictionary *)launchingOption
  130. appKey:(NSString *)appKey
  131. channel:(NSString *)channel
  132. apsForProduction:(BOOL)isProduction
  133. advertisingIdentifier:(NSString *)advertisingId;
  134. ///----------------------------------------------------
  135. /// @name APNs about 通知相关
  136. ///----------------------------------------------------
  137. /*!
  138. * @abstract 注册要处理的远程通知类型
  139. *
  140. * @param types 通知类型
  141. * @param categories 类别组
  142. *
  143. */
  144. + (void)registerForRemoteNotificationTypes:(NSUInteger)types
  145. categories:(NSSet *)categories;
  146. /*!
  147. * @abstract 新版本的注册方法(兼容iOS10)
  148. *
  149. * @param config 注册通知配置
  150. * @param delegate 代理
  151. *
  152. */
  153. + (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(id<JPUSHRegisterDelegate>)delegate;
  154. + (void)registerDeviceToken:(NSData *)deviceToken;
  155. /*!
  156. * @abstract 处理收到的 APNs 消息
  157. */
  158. + (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
  159. /*!
  160. * Tags操作接口
  161. * 支持增加/覆盖/删除/清空/查询操作
  162. * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
  163. */
  164. /**
  165. 增加tags
  166. @param tags 需要增加的tags集合
  167. @param completion 响应回调
  168. @param seq 请求序列号
  169. */
  170. + (void)addTags:(NSSet<NSString *> *)tags
  171. completion:(JPUSHTagsOperationCompletion)completion
  172. seq:(NSInteger)seq;
  173. /**
  174. 覆盖tags
  175. 调用该接口会覆盖用户所有的tags
  176. @param tags 需要设置的tags集合
  177. @param completion 响应回调
  178. @param seq 请求序列号
  179. */
  180. + (void)setTags:(NSSet<NSString *> *)tags
  181. completion:(JPUSHTagsOperationCompletion)completion
  182. seq:(NSInteger)seq;
  183. /**
  184. 删除指定tags
  185. @param tags 需要删除的tags集合
  186. @param completion 响应回调
  187. @param seq 请求序列号
  188. */
  189. + (void)deleteTags:(NSSet<NSString *> *)tags
  190. completion:(JPUSHTagsOperationCompletion)completion
  191. seq:(NSInteger)seq;
  192. /**
  193. 清空所有tags
  194. @param completion 响应回调
  195. @param seq 请求序列号
  196. */
  197. + (void)cleanTags:(JPUSHTagsOperationCompletion)completion
  198. seq:(NSInteger)seq;
  199. /**
  200. 查询全部tags
  201. @param completion 响应回调,请在回调中获取查询结果
  202. @param seq 请求序列号
  203. */
  204. + (void)getAllTags:(JPUSHTagsOperationCompletion)completion
  205. seq:(NSInteger)seq;
  206. /**
  207. 验证tag是否绑定
  208. @param completion 响应回调,回调中查看是否绑定
  209. @param seq 请求序列号
  210. */
  211. + (void)validTag:(NSString *)tag
  212. completion:(JPUSHTagValidOperationCompletion)completion
  213. seq:(NSInteger)seq;
  214. /**
  215. 设置Alias
  216. @param alias 需要设置的alias
  217. @param completion 响应回调
  218. @param seq 请求序列号
  219. */
  220. + (void)setAlias:(NSString *)alias
  221. completion:(JPUSHAliasOperationCompletion)completion
  222. seq:(NSInteger)seq;
  223. /**
  224. 删除alias
  225. @param completion 响应回调
  226. @param seq 请求序列号
  227. */
  228. + (void)deleteAlias:(JPUSHAliasOperationCompletion)completion
  229. seq:(NSInteger)seq;
  230. /**
  231. 查询当前alias
  232. @param completion 响应回调
  233. @param seq 请求序列号
  234. */
  235. + (void)getAlias:(JPUSHAliasOperationCompletion)completion
  236. seq:(NSInteger)seq;
  237. /*!
  238. * @abstract 过滤掉无效的 tags
  239. *
  240. * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags.
  241. * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤.
  242. */
  243. + (NSSet *)filterValidTags:(NSSet *)tags;
  244. ///----------------------------------------------------
  245. /// @name Stats 统计功能
  246. ///----------------------------------------------------
  247. /*!
  248. * @abstract 开始记录页面停留
  249. *
  250. * @param pageName 页面名称
  251. */
  252. + (void)startLogPageView:(NSString *)pageName;
  253. /*!
  254. * @abstract 停止记录页面停留
  255. *
  256. * @param pageName 页面
  257. */
  258. + (void)stopLogPageView:(NSString *)pageName;
  259. /*!
  260. * @abstract 直接上报在页面的停留时间
  261. *
  262. * @param pageName 页面
  263. * @param seconds 停留的秒数
  264. */
  265. + (void)beginLogPageView:(NSString *)pageName duration:(int)seconds;
  266. /*!
  267. * @abstract 开启Crash日志收集
  268. *
  269. * @discussion 默认是关闭状态.
  270. */
  271. + (void)crashLogON;
  272. /*!
  273. * @abstract 地理位置上报
  274. *
  275. * @param latitude 纬度.
  276. * @param longitude 经度.
  277. *
  278. */
  279. + (void)setLatitude:(double)latitude longitude:(double)longitude;
  280. /*!
  281. * @abstract 地理位置上报
  282. *
  283. * @param location 直接传递 CLLocation * 型的地理信息
  284. *
  285. * @discussion 需要链接 CoreLocation.framework 并且 #import <CoreLocation/CoreLocation.h>
  286. */
  287. + (void)setLocation:(CLLocation *)location;
  288. ///----------------------------------------------------
  289. /// @name Local Notification 本地通知
  290. ///----------------------------------------------------
  291. /*!
  292. * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本)
  293. *
  294. * JPush 2.1.9新接口
  295. * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回
  296. * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换
  297. *
  298. */
  299. + (void)addNotification:(JPushNotificationRequest *)request;
  300. /*!
  301. * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本)
  302. *
  303. * JPush 2.1.9新接口
  304. * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。
  305. * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换
  306. *
  307. */
  308. + (void)removeNotification:(JPushNotificationIdentifier *)identifier;
  309. /*!
  310. * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本)
  311. *
  312. * JPush 2.1.9新接口
  313. * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
  314. * @discussion 旧的查找推送接口被废弃,使用此接口可以替换
  315. *
  316. */
  317. + (void)findNotification:(JPushNotificationIdentifier *)identifier;
  318. /*!
  319. * @abstract 本地推送,最多支持64个
  320. *
  321. * @param fireDate 本地推送触发的时间
  322. * @param alertBody 本地推送需要显示的内容
  323. * @param badge 角标的数字。如果不需要改变角标传-1
  324. * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动")
  325. * @param notificationKey 本地推送标示符
  326. * @param userInfo 自定义参数,可以用来标识推送和增加附加信息
  327. * @param soundName 自定义通知声音,设置为nil为默认声音
  328. *
  329. * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代
  330. */
  331. + (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
  332. alertBody:(NSString *)alertBody
  333. badge:(int)badge
  334. alertAction:(NSString *)alertAction
  335. identifierKey:(NSString *)notificationKey
  336. userInfo:(NSDictionary *)userInfo
  337. soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  338. /*!
  339. * @abstract 本地推送 (支持 iOS8 新参数)
  340. *
  341. * IOS8新参数
  342. * @param region 自定义参数
  343. * @param regionTriggersOnce 自定义参数
  344. * @param category 自定义参数
  345. * @discussion 此方法被[addNotification:]方法取代
  346. */
  347. + (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
  348. alertBody:(NSString *)alertBody
  349. badge:(int)badge
  350. alertAction:(NSString *)alertAction
  351. identifierKey:(NSString *)notificationKey
  352. userInfo:(NSDictionary *)userInfo
  353. soundName:(NSString *)soundName
  354. region:(CLRegion *)region
  355. regionTriggersOnce:(BOOL)regionTriggersOnce
  356. category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  357. /*!
  358. * @abstract 前台展示本地推送
  359. *
  360. * @param notification 本地推送对象
  361. * @param notificationKey 需要前台显示的本地推送通知的标示符
  362. *
  363. * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可
  364. */
  365. + (void)showLocalNotificationAtFront:(UILocalNotification *)notification
  366. identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  367. /*!
  368. * @abstract 删除本地推送定义
  369. *
  370. * @param notificationKey 本地推送标示符
  371. * @discussion 此方法被[removeNotification:]方法取代
  372. */
  373. + (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  374. /*!
  375. * @abstract 删除本地推送定义
  376. * @discussion 此方法被[removeNotification:]方法取代
  377. */
  378. + (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  379. /*!
  380. * @abstract 获取指定通知
  381. *
  382. * @param notificationKey 本地推送标示符
  383. * @return 本地推送对象数组, [array count]为0时表示没找到
  384. * @discussion 此方法被[findNotification:]方法取代
  385. */
  386. + (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  387. /*!
  388. * @abstract 清除所有本地推送对象
  389. * @discussion 此方法被[removeNotification:]方法取代
  390. */
  391. + (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期")));
  392. ///----------------------------------------------------
  393. /// @name Server badge 服务器端 badge 功能
  394. ///----------------------------------------------------
  395. /*!
  396. * @abstract 设置角标(到服务器)
  397. *
  398. * @param value 新的值. 会覆盖服务器上保存的值(这个用户)
  399. *
  400. * @discussion 本接口不会改变应用本地的角标值.
  401. * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标.
  402. *
  403. * 本接口用于配合 JPush 提供的服务器端角标功能.
  404. * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理.
  405. *
  406. * JPush 服务器端脚标功能提供:
  407. *
  408. * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来;
  409. * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户),
  410. * 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值;
  411. */
  412. + (BOOL)setBadge:(NSInteger)value;
  413. /*!
  414. * @abstract 重置脚标(为0)
  415. *
  416. * @discussion 相当于 [setBadge:0] 的效果.
  417. * 参考 [JPUSHService setBadge:] 说明来理解其作用.
  418. */
  419. + (void)resetBadge;
  420. ///----------------------------------------------------
  421. /// @name Other Feature 其他功能
  422. ///----------------------------------------------------
  423. /*!
  424. * @abstract 设置手机号码(到服务器)
  425. *
  426. * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码
  427. * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息
  428. *
  429. * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。
  430. *
  431. */
  432. + (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion;
  433. ///----------------------------------------------------
  434. /// @name Logs and others 日志与其他
  435. ///----------------------------------------------------
  436. /*!
  437. * @abstract JPush标识此设备的 registrationID
  438. *
  439. * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到.
  440. *
  441. * JPush 支持根据 registrationID 来进行推送.
  442. * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来.
  443. * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil.
  444. * 更多的理解请参考 JPush 的文档网站.
  445. */
  446. + (NSString *)registrationID;
  447. + (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
  448. /*!
  449. * @abstract 打开日志级别到 Debug
  450. *
  451. * @discussion JMessage iOS 的日志系统参考 Android 设计了级别.
  452. * 从低到高是: Verbose, Debug, Info, Warning, Error.
  453. * 对日志级别的进一步理解, 请参考 Android 相关的说明.
  454. *
  455. * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
  456. *
  457. * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
  458. */
  459. + (void)setDebugMode;
  460. /*!
  461. * @abstract 关闭日志
  462. *
  463. * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode]
  464. *
  465. * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出.
  466. *
  467. * 建议在发布的版本里, 调用此接口, 关闭掉日志打印.
  468. */
  469. + (void)setLogOFF;
  470. ///----------------------------------------------------
  471. ///********************下列方法已过期********************
  472. ///**************请使用新版tag/alias操作接口**************
  473. ///----------------------------------------------------
  474. /// @name Tag alias setting 设置别名与标签
  475. ///----------------------------------------------------
  476. /*!
  477. * 下面的接口是可选的
  478. * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
  479. * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可.
  480. * WARN: 使用block时需要注意循环引用问题
  481. */
  482. + (void) setTags:(NSSet *)tags
  483. alias:(NSString *)alias
  484. callbackSelector:(SEL)cbSelector
  485. target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期")));
  486. + (void) setTags:(NSSet *)tags
  487. alias:(NSString *)alias
  488. callbackSelector:(SEL)cbSelector
  489. object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
  490. + (void) setTags:(NSSet *)tags
  491. callbackSelector:(SEL)cbSelector
  492. object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
  493. + (void)setTags:(NSSet *)tags
  494. alias:(NSString *)alias
  495. fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期")));
  496. + (void) setTags:(NSSet *)tags
  497. aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期")));
  498. + (void)setAlias:(NSString *)alias
  499. callbackSelector:(SEL)cbSelector
  500. object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
  501. @end
  502. @class UNUserNotificationCenter;
  503. @class UNNotificationResponse;
  504. @protocol JPUSHRegisterDelegate <NSObject>
  505. /*
  506. * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]
  507. * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
  508. * @param notification 前台得到的的通知对象
  509. * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions
  510. */
  511. - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler;
  512. /*
  513. * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]
  514. * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
  515. * @param response 通知响应对象
  516. * @param completionHandler
  517. */
  518. - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;
  519. @end