iOS中浅淡UIApplication单例

来源:互联网 发布:网络病毒的来源 编辑:程序博客网 时间:2024/05/21 16:59

在iOS的操作系统中 每一个程序都对应一个application单例,每一个application都对应一个Appdelegate代理,在代理中控制程序的各个状态。我们在程序中获取Application单例:[UIApplicationsharedApplication].当进行有关该应用的相关操作设置时需要获取,进行响应的操作。比如:

1、应用之间的调用和跳转  

打开电话:[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:[NSStringstringWithFormat:@"tel://%@",_PersonPhoneStr]]];

打开邮箱:[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto://devprograms@apple.com"]];打开短信:[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sms://466453"]];

打开浏览器[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]];  

也可以打开自己指定的程序:首先必须要知道要打开的程序所制定的url协议,然后再本程序中调用以下方法:[[UIApplication sharedApplicationopenURL:[NSURL URLWithString:@"要打开的软件协议名称://"]];

比如:创建A程序,我在A程序中的info.plist中制定对外程序打开A程序的url协议:

    然后再A程序的appdelegate中实现:

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    

    if([[url

         scheme]isEqualToString:@"myapp"]){


        return

        YES;

    }

    return 

    NO;

}。在B程序中调用以下方法打开A程序:[[UIApplication sharedApplicationopenURL:[NSURL URLWithString:@"myapp://"]];

如果想传参数直接在//后面加就可以。

2、设置appIcon图标上的红色提示数字。

在ios8以后加入了用户权限的判断,在程序启动时首先执行:

float version = [[[UIDevicecurrentDevice]systemVersion]floatValue];

    if (version >= 8.0) {

        UIUserNotificationSettings *settings = [UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeBadgecategories:nil];

        [[UIApplicationsharedApplication]registerUserNotificationSettings:settings];

    }

然后在程序任何地方可以通过以下代码设置角标:

UIApplication *app=[UIApplicationsharedApplication];

app.applicationIconBadgeNumber=123;

当使用推送时相应的应该会有一个全局变量表示当前角标的数量,当在后台收到推送时应该在+1,当程序打开时应该把此角标变量设置为0.

3、在状态栏中显示网络加载。

 UIApplication *app=[UIApplicationsharedApplication];

 app.networkActivityIndicatorVisible=YES;

4、管理状态栏

iOS中管理状态栏有两种方式:1、使用UIApplication进行全局设置:首先在info.plist的文件中加入: 然后在程序中调用以下代码:

  UIApplication *app=[UIApplicationsharedApplication];

  [app setStatusBarStyle:UIStatusBarStyleLightContentanimated:YES];

2、在每个界面中都可以对状态栏进行控制:在Viewcontroller中重写以下两个方法:

#pragma mark-设置状态栏的样式

-(UIStatusBarStyle)preferredStatusBarStyle

{

    //设置为白色

    //return UIStatusBarStyleLightContent;

    //默认为黑色

    returnUIStatusBarStyleDefault;

}

#pragma mark-设置状态栏是否隐藏(否)

-(BOOL)prefersStatusBarHidden

{

    return YES;

}

0 0