zoukankan      html  css  js  c++  java
  • 本地推送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/
  • 相关阅读:
    关于10053 trace中的UNCOMPBKTS和ENDPTVALS
    12c新特性
    ORA600:[ksnpost:ksnigb]错误一例
    RAC CRS Resource资源的生命周期
    Windows上如何禁用TCP/IP自动调优特性
    11g新特性
    Exadata V2 OracleSun Database Machine数据库一体机
    Script:verify Oracle Object timestamp discrepancy
    Grid Control OMS Agent代理工作原理图
    Android 编程下报错 Exception raised during rendering: java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;
  • 原文地址:https://www.cnblogs.com/jiackyan/p/3019907.html
Copyright © 2011-2022 走看看