XGLocalNotification.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //
  2. // XGLocalNotification.h
  3. // XG-SDK
  4. //
  5. // Created by rockzuo on 2020/10/27.
  6. // Copyright © 2020 TEG of Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /// 通知内容类
  10. @interface XGNotificationContent : NSObject <NSCopying>
  11. /// 通知标题
  12. @property (nonatomic, copy) NSString *title;
  13. /// 通知副标题
  14. @property (nonatomic, copy) NSString *subtitle;
  15. /// 通知内容
  16. @property (nonatomic, copy) NSString *body;
  17. /// 通知角标,不需要修改则不传
  18. @property (nonatomic, copy) NSNumber *badge;
  19. /// 自定义弹框按钮显示的内容
  20. @property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0);
  21. /// 分类标识
  22. @property (nonatomic, copy) NSString *categoryIdentifier;
  23. /// 本地推送时可以通过userInfo设置附加信息
  24. @property (nonatomic, copy) NSDictionary *userInfo;
  25. /// 收到通知提示音,不设置则为默认声音(您可以本地使用一段声音,创建本地通知时指定此声音)
  26. @property (nonatomic, copy) NSString *sound;
  27. /// 图片、音视频富媒体元素url地址,具体类型支持请参考:https://cloud.tencent.com/document/product/548/46964
  28. @property (nonatomic, copy) NSString *mediaUrl;
  29. /// 线程或与推送请求相关对话的标识,可用来对推送进行分组
  30. @property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0);
  31. /// 启动图片
  32. @property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0);
  33. @end
  34. /// 通知触发类
  35. @interface XGNotificationTrigger : NSObject <NSCopying>
  36. /// 是否重复,默认值NO
  37. @property (nonatomic, assign) BOOL repeats;
  38. /// 推送触发时间,低于iOS10使用
  39. @property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0);
  40. /// 推送触发时间,iOS10+使用,优先级I(dateComponents和timeInterval都有值时优先使用dateComponents)
  41. @property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0);
  42. /// 推送触发时间,iOS10+使用,优先级II(dateComponents和timeInterval都有值时优先使用dateComponents)
  43. /// 当repeats为YES时timeInterval时间间隔必须大于60S
  44. @property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0);
  45. @end
  46. /// 通知管理类
  47. @interface XGNotificationRequest : NSObject <NSCopying>
  48. /// 通知请求标识,移除通知会用到此标识
  49. @property (nonatomic, copy) NSString *requestIdentifier;
  50. /// 通知内容
  51. @property (nonatomic, copy) XGNotificationContent *content;
  52. /// 通知触发器
  53. @property (nonatomic, copy) XGNotificationTrigger *trigger;
  54. @end
  55. /// 通知类
  56. @interface XGLocalNotification : NSObject
  57. /// 注册或更新推送
  58. /// @param request XGNotificationRequest类型,管理推送相关属性
  59. /// @note iOS10+支持在已有推送基础上设置request.requestIdentifier来更新此推送
  60. + (void)addNotification:(XGNotificationRequest *)request;
  61. /// 获取计划发送的通知
  62. /// @param completionHandler 计划发送通知回调,iOS10+返回UNNotificationRequest数组,低于iOS10返回UILocalNotification数组
  63. + (void)getPendingNotificationRequestsWithCompletionHandler:(void (^)(NSArray *requests))completionHandler;
  64. /// 移除计划发送的通知
  65. /// @param identifiers 要移除的本地推送标识的集合
  66. + (void)removePendingLocalNotification:(NSArray<NSString *> *)identifiers;
  67. /// 移除所有计划发送的通知
  68. + (void)removeAllPendingLocalNotifications;
  69. @end