UIApplication--前面一直提到UIApplication对象,这个对象在iOS中是一个单例,我们通过[UIApplication sharedApplication]获得(注意在iOS开发中一般以shared开头的对象都是单例)。这里列举一些UIApplication的常用 方法
例如调用applicationIconBadgeNumber方法之后效果如下:
当IOS版本>=8.0时候,调用applicationIconBadgeNumber会遇到下面的错误提示:
Attempting to badge the application icon but haven't received permission from the user to badge the application
一切都是iOS8捣的鬼。您如果把模拟器换成iOS7.1或者更早的,就不会有这个问题。而现在在iOS8中要实现badge、alert和sound等都需要用户同意才能,因为这些都算做Notification“通知”,为了防止有些应用动不动给用户发送“通知”骚扰用户,所以在iOS8时,要“通知”必须要用户同意才行。
(2)解决思路:我们判断一下,如果系统版本大于等于8.0的话,我们就在用户打开应用的时候弹出一个框框提示说我们要发送通知给你,你同意不?如果用户同意,那么我们就可以了。而如果系统版本小于8.0的话,因为默认是可以的,所以我们不需要做任何事情。
那么问题来了:怎么弹个框框给用户,并且用户同意让我们发通知呢?
——首先这个是在应用程序第一次被打开加载完毕的时候就要弹出这个框,安装过APP的人都不会陌生吧。所以,需要在AppDelegate.m的didFinishLaunching方法中写。
——其次,我们判断系统版本,用if语句,获取系统版本,把NSString转换成float可以比较,这些都没问题。
——最终,核心是if里面的三句话。大体意思是,我们先定义一个“通知设置”,然后把这个“通知设置”注册到“用户通知设置”里面,而注册到“用户通知设置”里面的那些“通知设置”,都是用框框弹出来让用户决定是否接受这种通知的。
——这个“通知设置”,主要是定义“通知类型”。我们本例中只是badge,但是还有alert和sound都属于通知类型,所以我们“多此一举”,把所有的通知类型都囊括进来,这样,我们就不需要以后一个一个的去设置alert和sound了。
修改 AppDelegate.m 中的方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self initNotification]; // Override point for customization after application launch. return YES; } - (void) initNotification{ float sysVersion = [[UIDevice currentDevice]systemVersion].floatValue; if (sysVersion>=8.0) { UIUserNotificationType type = UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound; UIUserNotificationSettings* setting = [UIUserNotificationSettings settingsForTypes:type categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:setting]; } }
相关推荐
这是我在学习ios的过程中写的一个demo。介绍ios的UIApplication。
UIApplication深入学习让你不在惧怕ios面试
application开发使用
详细图解方式描述UIApplication运行生命周期
IOS 中UIApplication详解及实例 以前刚学iPhone开发时,觉得UIApplication这个东西特NB,特神秘,比如它居然能打开一个URL,而且还是用一个很神秘的方法得到实例: [UIApplication sharedApplication] 它对我的...
个人总结,仅供参考;废话一句,全为二十。
UIApplication_Delegate
UIApplication设置程序图标右上⾓红⾊数字_联⺴指⽰器等
A feature-rich application help class inherited from UIApplication. 安装 You only need drag LxApplication.h and LxApplication.m to your project. 支持 Minimum support iOS version: iOS 5.0 用法 ...
android sdk Userinterface注意事项。以及大致结构框架。
这个函数主要负责三件事情: 1)从给定的类名初始化应用程序对象,也就是初始化UIApplication或子类对象的一个实例,如果你在这里给定的是nil,那么系统会替换UIApplication类,也就主要是这个类来控制以及协调...
使用 Objective C 编写的 Mac OS 风格横幅,通过在 UIApplication 的 UIWindow 中添加 UIView 来尊重 iOS 的 iOS7 和 iOS8。 它添加为 ALL 的另一个视图顶部。 另外,使用块来关闭和触摸事件。 你喜欢它? 在您的...
UIApplication.sharedApplication.delegate; 反对: [view setBackgroundColor:[UIColor orangeColor]]; [UIApplication sharedApplication].delegate; 间距 一个缩进使用 4 个空格,永远不要使用制表符(tab)缩进...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ...
2.重写AppDelegate中的- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url和- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)...
主要功能点 添加一个基于本地通知的提醒任务 设置提醒的开始日期,结束日期,触发提醒的时间点以及提醒的频次 ...最后使用[[UIApplication sharedApplication] scheduleLocalNotification:myLocalNotification]配置通知
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; DDXMLDocument *doc = [[DDXMLDocument alloc] initWithXMLString:str options:0 error:nil]; /////解析 NSArray *items = [doc ...
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { NSString *receText = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"参数:%@ ...