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

    1如何生成一个本地推送

      UILocalNotification *localNotification = [[UILocalNotification alloc]init];

        // 接收到通知时,播放的音频文件

        localNotification.soundName = @"shake.wav";

        // 通知的发送时间

        localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

        // 最好带上时区,用于对fireDate的补充

        localNotification.timeZone = [NSTimeZone defaultTimeZone];

        // 通知的内容

        localNotification.alertBody = @"通知的内容";

        // 锁屏界面显示的通知内容,灰色小字

        localNotification.alertAction = @"通知的内容2(在锁屏界面)";

        // 点击通知,打开应用时,加载的启动图片,只能是是应用的启动图片

        localNotification.alertLaunchImage = @"Default";

        // 接收到通知后,图标右上角显示的数字

        localNotification.applicationIconBadgeNumber = 20;

        // 通知的附加信息,字典类型

        localNotification.userInfo = @{

                                       @"dictKey":@"userInfo详情",

                                       @"dictKey2":@"userInfo详情2"

                                       };

        // 启用通知,按照上文的设置,上文设置的时5秒后发送通知,那就是代码执行到此行,再过5秒才会发送通知

        [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

        // 立即发送通知,也就是说上文的fireDate和timeZone就没有作用了.

      // 下面代码存在的意义就是当程序在后台运行时,立即发送通知

        // [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

    2通知的回调方法,AppDelegate.m里的2个方法

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

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

    2.1 第1个回调方法,是在接收到通知时,程序没被杀死时调用:

      如果程序是在前台,方法会回调,不会有横幅提示;

      /*

      如果希望程序在前台时,不提示用户,可以加程序运行状态的判断 application.applicationState == UIApplicationStateActive),

       程序由后台到前台时的状态变化是下面这样的, 如果是前台到后台则反过来: 

       UIApplicationStateBackground(后台) -> UIApplicationStateInactive(未激活,此时所有UI界面无法接收用户点击) -> UIApplicationStateActive(激活)

        */   

      如果程序是在后台,方法会回调,有横幅提示.

    1 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
    2 {
    3     if (application.applicationState == UIApplicationStateActive) return;
    4     self.label.text = @"收到通知时,程序还活着(前台后台都算),就会回调本方法";  
    5 }

    2.2 第2个回调方法,是在接收到通知时,程序已被杀死了的情况下调用,其实这个方法在点击应用图标启动时,或者点击横幅通知时,都会调用

        因此在处理通知时,需要判断程序到底是 点击应用图标启动的,还是 点击横幅通知启动

     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     2 {
     3     UILocalNotification *note = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
     4 
     5     if (note) { 
     6         self.label.text = @"点击横幅通知启动的程序";
     7     }else{
     8         self.label.text = @"点击app图标启动的程序";
     9     }
    10 
    11     return YES;
    12 }

      

  • 相关阅读:
    Java语言编码规范(Java Code Conventions) 转载
    Flex 彻底屏蔽右键 (转载)
    JAVA 读取文件(收集)
    可以运行SWT的精简版JRE 1.4.2_04, 压缩后仅1.3MB[整理]
    转载:多核平台下的JAVA优化
    森林消防智慧预警:火灾监测 Web GIS 可视化平台
    绿色数字园区运维:一屏群集 3D 可视化智慧楼宇
    js删除json key
    学习、应用Web标准一路走来——《重构之美》原创系列文章快速入口。
    中国互联网的鱼死网破新时代。
  • 原文地址:https://www.cnblogs.com/oumygade/p/4243058.html
Copyright © 2011-2022 走看看