提供全面且全面的推送api,提供6个主干和20个分支方法。
GitHub1. 普通推送
- 系统自带提示音
- 可设置自定义提示音
2. 图像推送,包含png、jpg、gif等图像格式
- 系统自带提示音
- 可设置自定义提示音
- 可以通过链接下载
- 可以通过链接下载,可设置自定义提示音
3. 视频推送
- 系统自带提示音
- 可设置自定义提示音
- 可以通过链接下载
- 可以通过链接下载,可设置自定义提示音
4. 定时推送(北京时间)
- 系统自带提示音(weekday、hour、minute、second)
- 可设置自定义提示音(weekday、hour、minute、second)
- 定时推送(行如2017-10-1) (year、month、day、hour、minute、second)
- 定时推送(行如2017-10-1)(year、month、day、hour、minute、second) 可设置自定义提示音
- 启动时间包含在字典内
- 推送时间包含在字典内,可设置自定义提示音
5. 交互推送(最大4组动作)
- 系统自带提示音
- 可设置自定义提示音
6. 定点推送
- 系统自带提示音
- 可设置自定义提示音
### 预览
首页 截图1 | 首页 截图2 | 首页 截图3 | 首页 截图4
-----|-----|-----|-----
| | |
普通推送l | 图像推送 | 视频推送
-----|-----|-----
| |
交互推送 gif | 视频推送 gif
-----|-----
|
### 核心代码
PushNotificationManager.h PushNotificationManager.m 使用许可PushNotificationManageruse MIT license
使用cocoapods安装 pod 'PushNotificationManager'示例
- 确认使用前已经通过cocoapods安装PushNotificationManager或导入PushNotificationManager文件
申请通知权限 if (kSystemVersion >= 10.0) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; UNAuthorizationOptions types=UNAuthorizationOptionBadge|UNAuthorizationOptionAlert|UNAuthorizationOptionSound; [center requestAuthorizationWithOptions:types completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted) { [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { }]; } else { [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{UIApplicationOpenURLOptionUniversalLinksOnly:@''} completionHandler:^(BOOL success) { }]; } }]; }else if (kSystemVersion >= 8.0){ #pragma clang diagnostic push #pragma clang diagnostic ignored '-Wdeprecated-declarations' [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil]]; #pragma clang diagnostic pop } 普通推送#p#分页标题#e#- function
-(void)normalPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;usage
[[PushNotificationManager sharedInstance]normalPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'1-1' timeInterval:3 repeat:NO]; //`repeat` if you pick the repeat property 'YES',you require to set the timeInterval value >= 60second ->是否重复,若要重复->时间间隔应>=60s 普通推送,可设置自定义提示音- function
-(void)normalPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
`
[[PushNotificationManager sharedInstance]normalPushNotificationWithTitle:@"John Winston Lennon" subTitle:@"《Imagine》" body:@"You may say that I'm a dreamer, but I'm not the only one" identifier:@"1-2" soundName:@"tmp.mp3" timeInterval:3 repeat:NO];
`
图像推送,包含png、jpg、gif等图像格式- function
-(void)graphicsPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fileName:(NSString *)fileName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
`
[[PushNotificationManager sharedInstance]graphicsPushNotificationWithTitle:@"John Winston Lennon" subTitle:@"《Imagine》" body:@"You may say that I'm a dreamer, but I'm not the only one" identifier:@"2-1" fileName:@"Graphics.jpg" timeInterval:3 repeat:NO];
`
图像推送,包含png、jpg、gif等图像格式,可设置自定义提示音- function
-(void)graphicsPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fileName:(NSString *)fileName soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]graphicsPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'2-2' fileName:@'Graphics.jpg' soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; 图像推送,可以通过链接下载- function
-(void)graphicsPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier urlString:(NSString *)urlString timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
`
[[PushNotificationManager sharedInstance]graphicsPushNotificationWithTitle:@"John Winston Lennon" subTitle:@"《Imagine》" body:@"You may say that I'm a dreamer, but I'm not the only one" identifier:@"2-3" urlString:@"https://i.loli.net/2017/09/30/59cf8056a1e21.jpg" timeInterval:3 repeat:NO];
`
图像推送,可以通过链接下载,可设置自定义提示音- function
-(void)graphicsPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier urlString:(NSString *)urlString soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;usage
[[PushNotificationManager sharedInstance]graphicsPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'2-4' urlString:@'https://i.loli.net/2017/09/30/59cf8056a1e21.jpg' soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; 视频推送- function
-(void)videoPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fileName:(NSString *)fileName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]videoPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'3-1' fileName:@'Raining.mp4' timeInterval:3 repeat:NO]; 视频推送,可设置自定义提示音- function
-(void)videoPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fileName:(NSString *)fileName soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;usage
[[PushNotificationManager sharedInstance]videoPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'3-2' fileName:@'Raining.mp4' soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; 视频推送,可以通过链接下载#p#分页标题#e#- function
-(void)videoPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier urlString:(NSString *)urlString timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- function
[[PushNotificationManager sharedInstance]videoPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'3-3' urlString:@'' timeInterval:5 repeat:NO]; //it need some time to download the video from internet,so set the `timeInterval` as 5s 视频推送,可以通过链接下载,可设置自定义提示音- function
-(void)videoPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier urlString:(NSString *)urlString soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]videoPushNotificationWithTitle:@'John Winston Lennon' subTitle:@'《Imagine》' body:@'You may say that I'm a dreamer, but I'm not the only one' identifier:@'3-4' urlString:@'' soundName:@'tmp.mp3' timeInterval:5 repeat:NO]; 定时推送- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier weekday:(NSString *)weekday hour:(NSString *)hour minute:(NSString *)minute second:(NSString *)second timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'2017-10-1' subTitle:@'Happy National Day' body:@'World Peace Hooray!' identifier:@'4-1' weekday:@'1' hour:@'2' minute:@'49' second:@'50' timeInterval:3 repeat:NO]; // 星期一2:49:50 ->Tuesday 2:33:10 定时推送,可设置自定义提示音- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier weekday:(NSString *)weekday hour:(NSString *)hour minute:(NSString *)minute second:(NSString *)second soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'2017-10-1' subTitle:@'Happy National Day' body:@'World Peace Hooray!' identifier:@'4-2' weekday:@'1' hour:@'2' minute:@'49' second:@'50' soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; // 星期一2:49:50 ->Tuesday 2:33:10 定时推送(行如2017-10-1)- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier year:(NSString *)year month:(NSString *)month day:(NSString *)day hour:(NSString *)hour minute:(NSString *)minute second:(NSString *)second timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'王菲' subTitle:@'《单行道》' body:@'春眠不觉晓,庸人偏自扰' identifier:@'4-3' year:@'2017' month:@'10' day:@'2' hour:@'2' minute:@'51' second:@'40' timeInterval:3 repeat:NO]; //2017-10-2 2:51:40 定时推送,可设置自定义提示音(行如2017-10-1)- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier year:(NSString *)year month:(NSString *)month day:(NSString *)day hour:(NSString *)hour minute:(NSString *)minute second:(NSString *)second soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'王菲' subTitle:@'《单行道》' body:@'春眠不觉晓,庸人偏自扰' identifier:@'4-4' year:@'2017' month:@'10' day:@'11' hour:@'12' minute:@'0' second:nil soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; // NSDictionary *dict = @{@'weekday':@1, //the `1` said Sunday in China ->`1`等于中国周日 // @'hour':@2, // @'minute':@20, // @'second':@10 // }; // this meaning the fire date is '2:20:10 Sunday' ->字典的内容表示'周日 2:20:10' 定时推送,启动时间包含在字典内#p#分页标题#e#- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fireDate:(NSDictionary *)fireDate timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat; // the fire date include the properities,such as era,year,month,day,hour,minute,second,nanosecond,weekday,weekdayOrdinal,quarter,weekOfMonth,weekOfYear,yearForWeekOfYear- usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'Bang Gang' subTitle:@'《Forever Now》' body:@'You can see her in the distance\n Where she walks alone\n Thenyou follow her direction\n To your second home' identifier:@'4-5' fireDate:@{@'year':@2017,@'month':@10,@'day':@2,@'hour':@2,@'minute':@55} timeInterval:3 repeat:NO]; 定时推送,推送时间包含在字典内,可设置自定义提示音- function
-(void)timingPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier fireDate:(NSDictionary *)fireDate soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]timingPushNotificationWithTitle:@'Bang Gang' subTitle:@'《Forever Now》' body:@'You can see her in the distance\n Where she walks alone\n Thenyou follow her direction\n To your second home' identifier:@'4-6' fireDate:@{@'year':@2017,@'month':@10,@'weekday':@1,@'hour':@3,@'minute':@3} soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; //2017-10 每周1 早上3点 -> 2017-10 every Monday 3:00 in China 交互推送- function
-(void)interactivePushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier identifierArray:(NSArray<NSString *> *)identifierArray actionArray:(NSArray<UNNotificationAction *> *)actionArray timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
UNTextInputNotificationAction *action1 = [UNTextInputNotificationAction actionWithIdentifier:@'reply' title:NSLocalizedString(@'评论', nil) options:UNNotificationActionOptionNone textInputButtonTitle:NSLocalizedString(@'发送', nil) textInputPlaceholder:NSLocalizedString(@'说点什么', nil)]; //reply action UNNotificationAction *action2 = [UNNotificationAction actionWithIdentifier:@'enter' title:NSLocalizedString(@'进入', nil) options:UNNotificationActionOptionForeground]; //enter action UNNotificationAction *action3 = [UNNotificationAction actionWithIdentifier:@'cancel' title:NSLocalizedString(@'销毁', nil) options:UNNotificationActionOptionDestructive]; //cancel action [[PushNotificationManager sharedInstance]interactivePushNotificationWithTitle:@'Bang Gang' subTitle:@'《Forever Now》' body:@'You can see her in the distance\n Where she walks alone\n Then you follow her direction\n To your second home' identifier:@'5-1' identifierArray:@[@'reply',@'enter',@'cancel'] actionArray:@[action1,action2,action3] timeInterval:3 repeat:NO]; 交互推送,可设置自定义提示音- function
-(void)interactivePushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier identifierArray:(NSArray<NSString *> *)identifierArray actionArray:(NSArray<UNNotificationAction *> *)actionArray soundName:(NSString *)soundName timeInterval:(NSInteger)timeInterval repeat:(BOOL)repeat;- usage
UNTextInputNotificationAction *action1 = [UNTextInputNotificationAction actionWithIdentifier:@'reply' title:NSLocalizedString(@'评论', nil) options:UNNotificationActionOptionNone textInputButtonTitle:NSLocalizedString(@'发送', nil) textInputPlaceholder:NSLocalizedString(@'说点什么', nil)]; //reply action UNNotificationAction *action2 = [UNNotificationAction actionWithIdentifier:@'enter' title:NSLocalizedString(@'进入', nil) options:UNNotificationActionOptionForeground]; //enter action UNNotificationAction *action3 = [UNNotificationAction actionWithIdentifier:@'cancel' title:NSLocalizedString(@'销毁', nil) options:UNNotificationActionOptionDestructive]; //cancel action [[PushNotificationManager sharedInstance]interactivePushNotificationWithTitle:@'Bang Gang' subTitle:@'《Forever Now》' body:@'You can see her in the distance\n Where she walks alone\n Then you follow her direction\n To your second home' identifier:@'5-2' identifierArray:@[@'reply',@'enter',@'cancel'] actionArray:@[action1,action2,action3] soundName:@'tmp.mp3' timeInterval:3 repeat:NO]; 定点推送#p#分页标题#e#- function
-(void)locationPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier longitude:(CGFloat)longitude latitude:(CGFloat)latitude radius:(NSInteger)radius notifyOnEntry:(BOOL)notifyOnEntey ontifyOnExit:(BOOL)notifyOnExit repeat:(BOOL)repeat;- usage
`
[[PushNotificationManager sharedInstance]locationPushNotificationWithTitle:@"Pink Floyd" subTitle:@"《Wish You Were Here》" body:@"How I wish you were here" identifier:@"6-1" longitude:120.030632 latitude:30.288121 radius:1000 notifyOnEntry:YES ontifyOnExit:YES repeat:NO];
`
定点推送,可设置自定义提示音- function
-(void)locationPushNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(NSString *)body identifier:(NSString *)identifier longitude:(CGFloat)longitude latitude:(CGFloat)latitude radius:(NSInteger)radius notifyOnEntry:(BOOL)notifyOnEntey ontifyOnExit:(BOOL)notifyOnExit soundName:(NSString *)soundName repeat:(BOOL)repeat;- usage
[[PushNotificationManager sharedInstance]locationPushNotificationWithTitle:@'Pink Floyd' subTitle:@'《Wish You Were Here》' body:@'How I wish you were here' identifier:@'6-2' longitude:120.030632 latitude:30.288121 radius:1000 notifyOnEntry:YES ontifyOnExit:YES soundName:@'tmp.mp3' repeat:NO]; 前端收到推送 // you can see the detail in the project named `PushNotificationManagerExample-ObjC` - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{} 应用在后端收到推送的处理方法 // you can see the detail in the project named `PushNotificationManagerExample-ObjC` -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler{} ,开题报告,开题报告