ios推送:本地通知UILocalNotification

//发送通知

    UILocalNotification *notification=[[UILocalNotification alloc] init];   
     if (notification!=nil) { 
        NSDate *now=[NSDate  new]; 
        notification.fireDate=[now dateByAddingTimeInterval: 10]; // 10秒后通知
        notification.repeatInterval= 0; // 循环次数,kCFCalendarUnitWeekday一周一次
        notification.timeZone=[NSTimeZone defaultTimeZone];
        notification.applicationIconBadgeNumber= 1// 应用的红色数字 
        notification.soundName= UILocalNotificationDefaultSoundName; // 声音,可以换成alarm.soundName = @"myMusic.caf" 
        
// 去掉下面2行就不会弹出提示框
         notification.alertBody= @" 通知内容 "; // 提示信息 弹出提示框
         notification.alertAction =  @" 打开 ";   // 提示框按钮 
        
// notification.hasAction = NO;  // 是否显示额外的按钮,为no时alertAction消失

       
//  NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"];
        
// notification.userInfo = infoDict;  // 添加额外的信息
        
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];      
    }
    [notification release];

取消通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
     //  Override point for customization after application launch.
    application.applicationIconBadgeNumber =  0;
     //  Add the view controller's view to the window and display.
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

     return YES;
}
- ( void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
     // 点击提示框的打开
    application.applicationIconBadgeNumber =  0;
}
- ( void)applicationDidBecomeActive:(UIApplication *)application {
     // 当程序还在后天运行
    application.applicationIconBadgeNumber =  0;
}



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

1、增加一个本地推送
//设置20秒之后 

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20];

    //chuagjian一个本地推送

    UILocalNotification *noti = [[[UILocalNotification allocinitautorelease];

    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 allocinitWithTitle:@"接收到本地提醒 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 allocinit];

        }

        

        if (localNoti && !state) {

            //不推送 取消推送

            [app cancelLocalNotification:localNoti];

            [localNoti release];

            return;

        }

}



  1. 第一步:创建本地推送  
  2. // 创建一个本地推送  
  3. UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];  
  4. //设置10秒之后  
  5. NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];  
  6. if (notification != nil) {  
  7.     // 设置推送时间  
  8.     notification.fireDate = pushDate;  
  9.     // 设置时区  
  10.     notification.timeZone = [NSTimeZone defaultTimeZone];  
  11.     // 设置重复间隔  
  12.     notification.repeatInterval = kCFCalendarUnitDay;  
  13.     // 推送声音  
  14.     notification.soundName = UILocalNotificationDefaultSoundName;  
  15.     // 推送内容  
  16.     notification.alertBody = @"推送内容";  
  17.     //显示在icon上的红色圈中的数子  
  18.     notification.applicationIconBadgeNumber = 1;  
  19.     //设置userinfo 方便在之后需要撤销的时候使用  
  20.     NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"key"];  
  21.     notification.userInfo = info;  
  22.     //添加推送到UIApplication         
  23.     UIApplication *app = [UIApplication sharedApplication];  
  24.     [app scheduleLocalNotification:notification];   
  25.      
  26. }  
  27.   
  28. 第二步:接收本地推送  
  29. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{  
  30.     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iWeibo" message:notification.alertBody delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];  
  31.     [alert show];  
  32.     // 图标上的数字减1  
  33.     application.applicationIconBadgeNumber -= 1;  
  34. }  
  35.   
  36. 第三步:解除本地推送  
  37. // 获得 UIApplication  
  38. UIApplication *app = [UIApplication sharedApplication];  
  39. //获取本地推送数组  
  40. NSArray *localArray = [app scheduledLocalNotifications];  
  41. //声明本地通知对象  
  42. UILocalNotification *localNotification;  
  43. if (localArray) {  
  44.     for (UILocalNotification *noti in localArray) {  
  45.         NSDictionary *dict = noti.userInfo;  
  46.         if (dict) {  
  47.             NSString *inKey = [dict objectForKey:@"key"];  
  48.             if ([inKey isEqualToString:@"对应的key值"]) {  
  49.                 if (localNotification){  
  50.                     [localNotification release];  
  51.                     localNotification = nil;  
  52.                 }  
  53.                 localNotification = [noti retain];  
  54.                 break;  
  55.             }  
  56.         }  
  57.     }  
  58.      
  59.     //判断是否找到已经存在的相同key的推送  
  60.     if (!localNotification) {  
  61.         //不存在初始化  
  62.         localNotification = [[UILocalNotification alloc] init];  
  63.     }  
  64.      
  65.     if (localNotification) {  
  66.         //不推送 取消推送  
  67.         [app cancelLocalNotification:localNotification];  
  68.         [localNotification release];  
  69.         return;  
  70.     }  
  71. }  

你可能感兴趣的:(ios推送:本地通知UILocalNotification)