iOS本地推送

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
第一步:创建本地推送 
// 创建一个本地推送 
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];  
        
     
第二步:接收本地推送 
- (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 
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
    
}

编程技巧