zoukankan      html  css  js  c++  java
  • iOS本地推送

    iOS的本地通知服务需要使用NSLocalNotification,处理基于时间行为的通知。比如定时通知用户该学习了。
    使用NSLocalNotification一般需要考虑三个方面:
    scheduled time:时间周期,用来指定iOS系统发送通知的日期和时间;
    notification type:通知类型(包括警告信息,动作按钮的标题,应用图标上的badge(数字标记)和播放的声音);
    自定义数据,本地通知可以包含一个dictionary类型的本地数据。
    对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略。
    使用示例:

    //发送
    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];      
        }

    //取消

    - (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;
    }

    //other

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

    NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20];

        //chuagjian一个本地推送

        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;

            }

    }

  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/weiboyuan/p/3765619.html
Copyright © 2011-2022 走看看