本地推送UILocalNotification

OS 4.0之后,我们就多了一种推送选择,即本地推送,可以减轻一些服务器的压力。今天和大家简单分享下iOS4里的本地推送。



 

1、增加一个本地推送

//设置20秒之后 

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20];



    //创建一个本地推送



    UILocalNotification *noti = [[[UILocalNotification alloc] init] autorelease];



    if (noti) {



        //设置推送时间



        noti.fireDate = date;



        //设置时区



        noti.timeZone = [NSTimeZone defaultTimeZone];



        //设置重复间隔



        noti.repeatInterval = NSWeekCalendarUnit;



        //推送声音



        noti.soundName = UILocalNotificationDefaultSoundName;



        //内容



        noti.alertBody = @"推送内容";



        //显示在icon上的红色圈中的数子



        noti.applicationIconBadgeNumber = 1;



        //设置userinfo 方便在之后需要撤销的时候使用



        NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];



        noti.userInfo = infoDic;



        //添加推送到uiapplication        



        UIApplication *app = [UIApplication sharedApplication];



        [app scheduleLocalNotification:noti];  



    }



 



2、程序运行时接收到本地推送消息



 



- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification



{



UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"接收到本地提醒 in app"



message:notification.alertBody



   delegate:nil



  cancelButtonTitle:@"确定"



  otherButtonTitles:nil];



[alert show];



//这里,你就可以通过notification的useinfo,干一些你想做的事情了



application.applicationIconBadgeNumber -= 1;



}



 



3、取消一个本地推送



 



UIApplication *app = [UIApplication sharedApplication];



    //获取本地推送数组



    NSArray *localArr = [app scheduledLocalNotifications];



    



    //声明本地通知对象



    UILocalNotification *localNoti;



    



    if (localArr) {



        for (UILocalNotification *noti in localArr) {



            NSDictionary *dict = noti.userInfo;



            if (dict) {



                NSString *inKey = [dict objectForKey:@"key"];



                if ([inKey isEqualToString:key]) {



                    if (localNoti){



                        [localNoti release];



                        localNoti = nil;



                    }



                    localNoti = [noti retain];



                    break;



                }



            }



        }



        



        //判断是否找到已经存在的相同key的推送



        if (!localNoti) {



            //不存在 初始化



            localNoti = [[UILocalNotification alloc] init];



        }



        



        if (localNoti && !state) {



            //不推送 取消推送



            [app cancelLocalNotification:localNoti];



            [localNoti release];



            return;



        }



}



 



原文地址:http://tr4work.blog.163.com/blog/static/1371493142011815101737243/

 

你可能感兴趣的:(notification)