1,在要推送的Controller里边定义一个推送,也可以写在一个类方法里,并且添加推送:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
UILocalNotification *
notification
=
[
[
[
UILocalNotification
alloc
]
init
]
autorelease
]
;
//设置10秒之后
NSDate *
pushDate
=
[
NSDate
dateWithTimeIntervalSinceNow
:
10
]
;
if
(
notification
!=
nil
)
{
// 设置推送时间
notification
.
fireDate
=
pushDate
;
// 设置时区
notification
.
timeZone
=
[
NSTimeZone
defaultTimeZone
]
;
// 设置重复间隔
notification
.
repeatInterval
=
kCFCalendarUnitDay
;
// 推送声音
notification
.
soundName
=
UILocalNotificationDefaultSoundName
;
// 推送内容
notification
.
alertBody
=
@
"推送内容"
;
//显示在icon上的红色圈中的数子
notification
.
applicationIconBadgeNumber
=
1
;
//设置userinfo 方便在之后需要撤销的时候使用
NSDictionary *
info
=
[
NSDictionary
dictionaryWithObject
:
@
"name"
forKey
:
@
"key"
]
;
notification
.
userInfo
=
info
;
//添加推送到UIApplication
UIApplication *
app
=
[
UIApplication
sharedApplication
]
;
[
app
scheduleLocalNotification
:
notification
]
;
}
|
2,在AppDelegate里边接收推送:
1
2
3
4
5
6
7
|
-
(
void
)
application
:
(
UIApplication *
)
application
didReceiveLocalNotification
:
(
UILocalNotification *
)
notification
{
UIAlertView *
alert
=
[
[
UIAlertView
alloc
]
initWithTitle
:
@
"iWeibo"
message
:
notification
.
alertBody
delegate
:
nil
cancelButtonTitle
:
@
"确定"
otherButtonTitles
:
nil
]
;
[
alert
show
]
;
//当弹出框出来的时候,小红点数字减1
// 图标上的数字减1
application
.
applicationIconBadgeNumber
-
=
1
;
}
|
3,取消推送,例如在删除cell中日程的时候,可以进行取消推送。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// 获得 UIApplication
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
:
@
"对应的key值"
]
)
{
if
(
localNotification
)
{
[
localNotification
release
]
;
localNotification
=
nil
;
}
localNotification
=
[
noti
retain
]
;
break
;
}
}
}
//判断是否找到已经存在的相同key的推送
if
(
!
localNotification
)
{
//不存在初始化
localNotification
=
[
[
UILocalNotification
alloc
]
init
]
;
}
if
(
localNotification
)
{
//不推送 取消推送
[
app
cancelLocalNotification
:
localNotification
]
;
[
localNotification
release
]
;
return
;
}
}
|
转载:http://blog.sina.com.cn/s/blog_621403ef01010zmp.html