消息推送——本地推送
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息推送——本地推送相关的知识,希望对你有一定的参考价值。
消息推送分两种:
1.本地推送(Local Notification)
2.远程推送(Remote Notification)
消息推送的作用
可以让APP不在前台,告知用户APP内部发生了什么
消息推送的效果
1.没有效果
2.横幅 在屏幕的顶部显示具体内容
3.提醒 UIAlertController 在屏幕中间显示具体内容
4.在锁屏的时候显示一块横幅 在手机的设置里面对它进行不同的效果设置
5.可以更改APP图标上面显示的提醒数字
注意:发送推送通知的时候,如果APP在前台运行,那么推送的通知不会被呈现出来 在发送通知之后,无论APP是打开,还是关闭,推送都能如期发出,但是用户不一定能如期去接收
但在ios8之后需要注册。
首先在AppDelegate.m文件里面需要判断版本信息根据版本信息是否大于8.0设置推送样式,具体代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*
推送通知的样式
UIUserNotificationTypeNone 没有样式
UIUserNotificationTypeBadge 改变应用右上角数字
UIUserNotificationTypeSound 带声音
UIUserNotificationTypeAlert 弹出框提示
*/
//判断版本信息是否大于8.0 设置推送的样式
if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories: nil];
//注册通知对象
[application registerUserNotificationSettings:settings];
}
//用作点击推送时跳转
if (launchOptions [UIApplicationLaunchOptionsLocationKey]) {
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 400, 200, 100)];
label.text = [NSString stringWithFormat:@"%@",launchOptions];
label.backgroundColor = [UIColor lightGrayColor];
label.font = [UIFont systemFontOfSize:14];
label.numberOfLines = 1;
[self.window.rootViewController.view addSubview:label];
}
return YES;
}
//点击通知打开应用的时候会执行该方法 在前台收到通知的时候也会调用该方法
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 400, 200, 100)];
label.backgroundColor = [UIColor lightGrayColor];
label.font = [UIFont systemFontOfSize:14];
label.numberOfLines = 1;
[self.window.rootViewController.view addSubview:label];
}
在ViewController.m文件通过button去触发本地消息发送对象,来实现本地消息推送
- (void)viewDidLoad {
[super viewDidLoad];
//通过Button去触发本地消息发送对象
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 100, 100, 50);
[button setTitle:@"添加通知" forState:UIControlStateNormal];
button.backgroundColor = [UIColor brownColor];
button.layer.cornerRadius = 6;
[button addTarget:self action:@selector(doit:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
//移除消息推送
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
button1.frame = CGRectMake(100, 200, 100, 50);
[button1 setTitle:@"移除通知" forState:UIControlStateNormal];
button1.backgroundColor = [UIColor brownColor];
button1.layer.cornerRadius = 6;
[button1 addTarget:self action:@selector(remove) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button1];
}
- (void)doit:(UIButton *)sender{
//1.创建一个本地通知对象
UILocalNotification *LocalNotification = [[UILocalNotification alloc]init];
//2.设置具体属性
//2.1设置通知发送的时间
LocalNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:3];
//2.2设置通知发送的内容
LocalNotification.alertBody = @"主人来消息了";
//2.3设置是否显示提示框
LocalNotification.hasAction = YES;
//2.4设置提示框
LocalNotification.alertAction = @"快来查看";
//2.5设置APP提示的数字
LocalNotification.applicationIconBadgeNumber = 123;
//2.6设置应用提示的声音
LocalNotification.soundName = UILocalNotificationDefaultSoundName;
//3.去调度本地推送通知
[[UIApplication sharedApplication]scheduleLocalNotification:LocalNotification];
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];
}
//移除消息推送的方法
- (void)remove{
[[UIApplication sharedApplication]cancelAllLocalNotifications];
}
以上是关于消息推送——本地推送的主要内容,如果未能解决你的问题,请参考以下文章
FAQHMS Core推送服务与本地创建通知消息如何相互覆盖?