iOS四大对象之UIApplication对象1. 获取2. 创建联网指示器3. 设置app右上角小图标的数字4. 打电话、发短信、上网5. 判断系统版本

  • 每一个应用都有自己的UIApplication对象,而且是单例的
  • iOS程序创建的第一个对象就是UIApplication
  • 通过[UIApplication sharedApplication]可以获得这个单例对象
  • 一个iOS程序启动后创建的第一个对象就是UIApplication对象
  • 一个应用程序里面只能有一个UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。
  • 利用UIApplication对象,能进行一些应用级别的操作。

1. 获取

不能直接创建。由系统自动创建。但是可以获取。

//获取这个单例对象
UIApplication *app = [UIApplication sharedApplication];

//NS_EXTENSION_UNAVAILABLE_IOS("Use view controller based solutions where appropriate instead.");
@property(class, nonatomic, readonly) UIApplication *sharedApplication

2. 创建联网指示器

Paste_Image.png

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//    获取应用程序对象
    UIApplication *app = [UIApplication sharedApplication];
//    设置联网指示器
    app.networkActivityIndicatorVisible = YES;
}

3. 设置app右上角小图标的数字

Paste_Image.png

3.1 授权的说明

  • 在使用此类获取授权的时候可以看到如图的提示。划线表示已经过期,苹果不再建议使用。
  • 官方建议使用UNNotificationSettings 替代。
  • 黄色报警,只是说明系统不建议使用这个方法。因为iOS10之后过期了,但是考虑到iOS 10.0刚推出没有多久,很多用户还依然是使用iOS9,所以这个地方最好还是使用兼容iOS9的方法。

Paste_Image.png

最终代码:

//    获取应用程序对象
    UIApplication *app = [UIApplication sharedApplication];
//    创建用户通知设置
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//    注册授权通知请求
    [app registerUserNotificationSettings:setting];
//    设置APP右上角的提示数字
    app.applicationIconBadgeNumber = 998;

3.2 设置提示数字

  • 使用属性applicationIconBadgeNumber进行赋值。
    app.applicationIconBadgeNumber = 998;
  • 对于这个属性,官方说明如下:
// set to 0 to hide. default is 0. In iOS 8.0 and later, your application must register for user notifications using -[UIApplication registerUserNotificationSettings:] before being able to set the icon badge.
@property(nonatomic) NSInteger applicationIconBadgeNumber;  

4. 打电话、发短信、上网

  • 使用openURL的方法
//    打开百度
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    [app openURL:url];
    
//    打电话
    NSURL *phone = [NSURL URLWithString:@"tel:10086"];
    [app openURL:phone];
    
    //    发短信
    NSURL *sms = [NSURL URLWithString:@"sms:10086"];
    [app openURL:sms];

    //    发邮件
    NSURL *email = [NSURL URLWithString:@"mailto:hah@22.com"];
    [app openURL:email];

5. 判断系统版本

  • 如果使用的方法中又不兼容系统的,就需要提前判断系统版本,从而使用不同的方法。
//获取当前系统版本
[UIDevice currentDevice].systemVersion.floatValue

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mukekeheart的iOS之旅

iOS学习——UIAlertController详解

  在开发中,弹出提示框是必不可少的。这两天项目中统一对已经被iOS API废弃的UIAlertView和UIActionSheet进行替换,我们知道,UIAl...

39817
来自专栏陈满iOS

iOS网络视频下载与播放:两种视频URL格式(m3u8 & mp4)(AVFoundation框架篇·以网易视频为例)

分析网易新闻的视频接口时,单个视频数据其实会包含了两种视频URL格式地址,一个MP4视频URL,一个m3u8视频URL。

4063
来自专栏進无尽的文章

推送-JPush(极光推送)的使用

推送服务可以说是所有 App 的标配,不论是哪种类型的 App,推送都从很大程度上决定了 App 的 打开率、使用率、存活率 。因此,熟知并掌握推送原理及方法,...

1171
来自专栏LeeCen

iOS微信支付简单的使用

752
来自专栏一“技”之长

iOS后台音频播放及锁屏界面显示音频信息 原

后台播放是任何一个音频软件都支持的功能,在上一篇博客中,详细介绍了使用AVAudioPlayer播放音频的方法,这篇博客将对后台的处理做介绍,关于播放与设置音频...

702
来自专栏進无尽的文章

绘图-简单手绘板的实现

自定义一个UIBezierPath的子类 LGPaintpath,下面是它的初始化方法

903
来自专栏kalifaの日々

python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)

思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就...

3289
来自专栏大内老A

谈谈IE针对Ajax请求结果的缓存

在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端。在某些情况下...

1705
来自专栏编程之旅

iOS开发——头像设置及本地沙盒保存,圆形头像显示

现在的APP中,对于头像的设置,我们大多采用圆形头像,并且需要支持从照相机获取或者从相册中选择用户需要的头像,并且保存在本地或者服务器中。

833
来自专栏移动端开发

常用开发技巧系列(四)

一:友盟的错误日志怎么看? 先说说友盟崩溃日志怎么查看的问题, 友盟统计我自己用的是比较多的,因为这个第三方的分享也是有的,就直接把友盟集成进去,统计和第三方...

2009

扫码关注云+社区