iOS的本地消息推送。
2016-03-02 13:31
393 查看
////////////////****创建一个本地通知******///////////////
//取消掉之前的所有通知
[[UIApplication
sharedApplication] cancelAllLocalNotifications];
// 创建一个本地推送
UILocalNotification *notification = [[UILocalNotification
alloc]
init];
//设置10秒之后
NSDate *pushDate = [NSDate
dateWithTimeIntervalSinceNow:10];
if (notification !=
nil) {
//
设置推送时间
notification.fireDate = pushDate;
// 设置时区
notification.timeZone = [NSTimeZone
defaultTimeZone];
//
设置重复间隔
notification.repeatInterval =
kCFCalendarUnitMinute;
// 推送声音
notification.soundName =
UILocalNotificationDefaultSoundName;
// 推送内容
notification.alertBody =
@"推送内容";
notification.alertBody =
@"Wake up, man";
notification.alertAction =
NSLocalizedString(@"起床了",
nil);
//显示在icon上的红色圈中的数子
notification.applicationIconBadgeNumber +=
1;
//设置userinfo
方便在之后需要撤销的时候使用
NSDictionary *info = [NSDictionary
dictionaryWithObject:@"name"forKey:@"key"];
notification.userInfo = info;
//添加推送到UIApplication
UIApplication *app = [UIApplication
sharedApplication];
[app scheduleLocalNotification:notification];
}
////////////////****取消本地通知*****///////////////
//取消掉通知
UIApplication *app = [UIApplication
sharedApplication];
//获取本地推送数组
NSArray *localArray = [app
scheduledLocalNotifications];
//声明本地通知对象
UILocalNotification *localNotification;
if (localArray) {
for (UILocalNotification *noti
in localArray) {
NSDictionary *dict = noti.userInfo;
if (dict) {
NSString *inKey = [dict
objectForKey:@"key"];
if ([inKey
isEqualToString:@"name"]) {
if (localNotification){
localNotification = nil;
}
localNotification = noti;
break;
}
}
}
//判断是否找到已经存在的相同key的推送
if (!localNotification) {
//不存在初始化
localNotification = [[UILocalNotification
alloc] init];
}
if (localNotification) {
//不推送
取消推送
[app cancelLocalNotification:localNotification];
return;
}
}
////////////////*****8.0以上需要添加,授权才会弹出*****///////////////
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 处理iOS8本地推送不能收到的问题
float sysVersion=[[UIDevice
currentDevice]systemVersion].floatValue;
if (sysVersion>=8.0) {
UIUserNotificationType type=UIUserNotificationTypeBadge |
UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
UIUserNotificationSettings *setting=[UIUserNotificationSettings
settingsForTypes:type
categories:nil];
[[UIApplication
sharedApplication]registerUserNotificationSettings:setting];
}
}
////////////////*****进入app后走的地方*****///////////////
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{
UIAlertView *alert = [[UIAlertView
alloc] initWithTitle:@"iWeibo"
message:notification.alertBody
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
//
图标上的数字减1
application.applicationIconBadgeNumber -=
1;
}
//取消掉之前的所有通知
[[UIApplication
sharedApplication] cancelAllLocalNotifications];
// 创建一个本地推送
UILocalNotification *notification = [[UILocalNotification
alloc]
init];
//设置10秒之后
NSDate *pushDate = [NSDate
dateWithTimeIntervalSinceNow:10];
if (notification !=
nil) {
//
设置推送时间
notification.fireDate = pushDate;
// 设置时区
notification.timeZone = [NSTimeZone
defaultTimeZone];
//
设置重复间隔
notification.repeatInterval =
kCFCalendarUnitMinute;
// 推送声音
notification.soundName =
UILocalNotificationDefaultSoundName;
// 推送内容
notification.alertBody =
@"推送内容";
notification.alertBody =
@"Wake up, man";
notification.alertAction =
NSLocalizedString(@"起床了",
nil);
//显示在icon上的红色圈中的数子
notification.applicationIconBadgeNumber +=
1;
//设置userinfo
方便在之后需要撤销的时候使用
NSDictionary *info = [NSDictionary
dictionaryWithObject:@"name"forKey:@"key"];
notification.userInfo = info;
//添加推送到UIApplication
UIApplication *app = [UIApplication
sharedApplication];
[app scheduleLocalNotification:notification];
}
////////////////****取消本地通知*****///////////////
//取消掉通知
UIApplication *app = [UIApplication
sharedApplication];
//获取本地推送数组
NSArray *localArray = [app
scheduledLocalNotifications];
//声明本地通知对象
UILocalNotification *localNotification;
if (localArray) {
for (UILocalNotification *noti
in localArray) {
NSDictionary *dict = noti.userInfo;
if (dict) {
NSString *inKey = [dict
objectForKey:@"key"];
if ([inKey
isEqualToString:@"name"]) {
if (localNotification){
localNotification = nil;
}
localNotification = noti;
break;
}
}
}
//判断是否找到已经存在的相同key的推送
if (!localNotification) {
//不存在初始化
localNotification = [[UILocalNotification
alloc] init];
}
if (localNotification) {
//不推送
取消推送
[app cancelLocalNotification:localNotification];
return;
}
}
////////////////*****8.0以上需要添加,授权才会弹出*****///////////////
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 处理iOS8本地推送不能收到的问题
float sysVersion=[[UIDevice
currentDevice]systemVersion].floatValue;
if (sysVersion>=8.0) {
UIUserNotificationType type=UIUserNotificationTypeBadge |
UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
UIUserNotificationSettings *setting=[UIUserNotificationSettings
settingsForTypes:type
categories:nil];
[[UIApplication
sharedApplication]registerUserNotificationSettings:setting];
}
}
////////////////*****进入app后走的地方*****///////////////
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{
UIAlertView *alert = [[UIAlertView
alloc] initWithTitle:@"iWeibo"
message:notification.alertBody
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
//
图标上的数字减1
application.applicationIconBadgeNumber -=
1;
}
相关文章推荐
- iOS url重定向
- iOS大转盘抽奖
- iOS 拨打电话功能
- iOS 教你如何实现手势密码
- iOS开发通信 ——— Socket之浅谈
- IOS 3D Touch 开发教程
- IOS-加载动态图(gif)
- iOS 开源项目和学习资料
- raywenderlich-iOS设计模式Part 1/2【译】
- ios中TableView的长按触发事件
- iOS 谁说程序猿不懂浪漫之 爱心
- 升级iOSBeta版本
- iOS开发之内存管理:借助工具解决内存问题
- IOS--多线程基础
- iOS 判断字符串"<null>"类型
- iOS开发之JS数据交互
- ios 开发证书显示“此证书的签发者无效”解决方法
- iOS中根据生日计算星座♈️
- Xcode Archive 不生成dsym文件的解决方法
- iOS实现从背景图中取色的代码