iOS里面的推送分为本地推送和远程推送,远程推送比较繁琐,需要一系列证书和diviceToken,才能在真机上测试,也只能在真机上测试。如果不用第三方的推送服务就要自己实现服务器。所以就先练练本地推送了,本地是可以在模拟器里面实现的,这仅仅是一个简单的使用,因为iOS系统对应用做了很大的限制(店大欺客啊),比如应用不能后台运行,那只能“曲线救国”了,使用本地推送来告诉用户,我们的应用需要他。
1.先在viewDidLoad方法里,创建开关空键并绑定事件
_app = [UIApplication sharedApplication];//在.m文件声明,类型为UIApplication
UISwitch *sw = [[UISwitch alloc]initWithFrame:CGRectMake(0, 60, 320, 40)];
[self.view addSubview:sw];
[sw addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
2.在绑定的事件里处理推送
-(void)change:(UISwitch*)sw
{
if (sw.on)
{
UILocalNotification *noti = [[UILocalNotification alloc]init];
noti.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
noti.timeZone = [NSTimeZone defaultTimeZone];
noti.repeatInterval = kCFCalendarUnitMinute;
noti.alertAction = @"打开";
noti.hasAction = YES;
noti.alertBody = @"今天是国庆节,祝你节日快乐";
noti.applicationIconBadgeNumber = 1;
NSDictionary *info = @{@"key":@"511"};
noti.userInfo = info;
[_app scheduleLocalNotification:noti];
}
else
{
NSArray *localArray = [_app scheduledLocalNotifications];
if (localArray)
{
for (UILocalNotification *noti in localArray)
{
NSDictionary *dic = noti.userInfo;
if (dic)
{
if ([dic[@"key"] isEqualToString:@"511"])
{
[_app cancelLocalNotification:noti];
}
}
}
}
}
}
先按Command+Shift+H回到首页,再用Command+L来锁屏
锁屏状态下收到的通知
程序图标:
完整Demo在这里,没有积分请留言