每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的。可以通过sharedApplication方法得到。
UIApplication对象的主要任务是处理用户事件的处理路径,例如分发一个UIEvent到另外一个对象去处理。UIApplication对象持有众多的UIWindow对象,因此可以组织app的展示。UIApplication对象还能处理一些资源,例如通过openURL:打开邮箱客户端或者设置界面等。
获得UIApplication对象
1
|
[UIApplication sharedApplication]
|
获得UIApplicationDelegate对象
1
|
[[UIApplication sharedApplication] delegate]
|
获得UIWindow对象
1
2
|
[[UIApplication sharedApplication] windows];
//UIWindow数组
[[UIApplication sharedApplication] keyWindow];
//UIWindow数组中最后调用makeKeyAndVisible方法的UIWindow对象
|
控制和处理UIEvent
1
2
3
4
|
- (
void
)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//分发一个event到另外一个对象去处理
[[UIApplication sharedApplication] sendAction:@selector(action: forEvent:) to:[CustomHandler sharedCustomHandler] from:self forEvent:event];
}
|
1
2
3
|
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
//开始忽略Event
//...中间调用动画等操作
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
//结束忽略Event
|
1
|
[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
//晃动是否有撤销或者重做动作
|
打开URL资源
1
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
//打开设置界面
|
配置通知设置
1
2
3
|
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
//注册远程推送通知
|
1
2
|
[[UIApplication sharedApplication] registerForRemoteNotifications];
//注册
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
//注销
|
1
2
3
4
5
6
7
8
9
10
|
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = date;
//时间
localNotif.timeZone = [NSTimeZone localTimeZone];
//时区
localNotif.repeatInterval = NSCalendarUnitMinute;
//间隔
localNotif.soundName = UILocalNotificationDefaultSoundName;
//声音
localNotif.alertBody = @
"Local Test"
;
//通知内容
localNotif.applicationIconBadgeNumber = 1;
//数字标示
localNotif.userInfo = @{@
"key"
:@
"test"
};
//info
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
//注册通知
|
1
2
3
4
5
|
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif];
//立即通知
[[UIApplication sharedApplication] cancelAllLocalNotifications];
//取消所有通知
[[UIApplication sharedApplication] cancelLocalNotification:localNotif];
//取消特定的通知
NSArray *arr = [[UIApplication sharedApplication] scheduledLocalNotifications];
//所有的通知
|
后台运行相关
1
2
3
4
5
6
7
8
9
10
11
|
[[UIApplication sharedApplication] applicationState];
//app状态
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:3600];
//设置后台运行时间
NSTimeInterval remainTime = [[UIApplication sharedApplication] backgroundTimeRemaining];
//app后台运行的时间
NSLog(@
"remainTIme = %f"
,remainTime);
int
state = [[UIApplication sharedApplication] backgroundRefreshStatus];
//后台刷新的状态
NSLog(@
"state = %d"
,state);
[[UIApplication sharedApplication] beginBackgroundTaskWithName:@
"taskOne"
expirationHandler:^{
}];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
}];
[[UIApplication sharedApplication] endBackgroundTask:1];
|
远程的控制相关
1
2
|
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
|
系统的Idle Timer
1
|
[UIApplication sharedApplication].idleTimerDisabled = YES;
//不让手机休眠
|
APP样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//隐藏状态条
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
//设置状态条的样式
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
[[UIApplication sharedApplication] statusBarStyle];
//状态条的Frame
[[UIApplication sharedApplication] statusBarFrame];
//网络是否可见
[[UIApplication sharedApplication] isNetworkActivityIndicatorVisible];
//badge数字
[UIApplication sharedApplication].applicationIconBadgeNumber = 2;
//屏幕的方向
[[UIApplication sharedApplication] userInterfaceLayoutDirection];
|
设置状态条的方向
1
|
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
|
数据类型
1
|
UIBackgroundTaskIdentifier : Int
|
1
2
3
4
5
6
7
|
typedef
enum
: NSUInteger {
UIRemoteNotificationTypeNone = 0,
UIRemoteNotificationTypeBadge = 1 << 0,
UIRemoteNotificationTypeSound = 1 << 1,
UIRemoteNotificationTypeAlert = 1 << 2,
UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
} UIRemoteNotificationType;
|
1
2
3
4
5
6
7
|
typedef
enum
: NSInteger {
UIStatusBarStyleDefault,
UIStatusBarStyleLightContent,
UIStatusBarStyleBlackTranslucent,
UIStatusBarStyleBlackOpaque
} UIStatusBarStyle;
|
1
2
3
4
5
|
typedef
enum
: NSInteger {
UIStatusBarAnimationNone,
UIStatusBarAnimationFade,
UIStatusBarAnimationSlide,
} UIStatusBarAnimation;
|
1
2
3
4
5
|
typedef
enum
: NSInteger {
UIApplicationStateActive ,
UIApplicationStateInactive ,
UIApplicationStateBackground
} UIApplicationState;
|
1
2
|
const
UIBackgroundTaskIdentifier UIBackgroundTaskInvalid ;
const
NSTimeInterval UIMinimumKeepAliveTimeout;
|
1
2
3
4
5
|
typedef
enum
: NSUInteger {
UIBackgroundFetchResultNewData ,
UIBackgroundFetchResultNoData ,
UIBackgroundFetchResultFailed
} UIBackgroundFetchResult;
|
1
2
|
const
NSTimeInterval UIApplicationBackgroundFetchIntervalMinimum ;
const
NSTimeInterval UIApplicationBackgroundFetchIntervalNever;
|
1
2
3
4
5
|
typedef
enum
: NSUInteger {
UIBackgroundRefreshStatusRestricted ,
UIBackgroundRefreshStatusDenied ,
UIBackgroundRefreshStatusAvailable
} UIBackgroundRefreshStatus;
|
1
2
3
4
5
6
7
|
typedef
enum
: NSInteger {
UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown ,
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait ,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown ,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight ,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;
|
1
2
3
4
|
typedef
enum
: NSInteger {
UIUserInterfaceLayoutDirectionLeftToRight ,
UIUserInterfaceLayoutDirectionRightToLeft ,
} UIUserInterfaceLayoutDirection;
|
1
|
NSString *
const
UIApplicationOpenSettingsURLString;
|
1
2
|
NSString *
const
UIApplicationStatusBarOrientationUserInfoKey ;
NSString *
const
UIApplicationStatusBarFrameUserInfoKey;
|
1
2
3
4
5
6
7
|
NSString *
const
UIContentSizeCategoryExtraSmall ;
NSString *
const
UIContentSizeCategorySmall ;
NSString *
const
UIContentSizeCategoryMedium ;
NSString *
const
UIContentSizeCategoryLarge ;
NSString *
const
UIContentSizeCategoryExtraLarge ;
NSString *
const
UIContentSizeCategoryExtraExtraLarge ;
NSString *
const
UIContentSizeCategoryExtraExtraExtraLarge;
|
1
2
3
4
5
|
NSString *
const
UIContentSizeCategoryAccessibilityMedium ;
NSString *
const
UIContentSizeCategoryAccessibilityLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraExtraLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraExtraExtraLarge;
|
1
|
NSString *
const
UIApplicationInvalidInterfaceOrientationException;
|
通知
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
UIApplicationBackgroundRefreshStatusDidChangeNotification
UIApplicationDidBecomeActiveNotification
UIApplicationDidChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarOrientationNotification
UIApplicationDidEnterBackgroundNotification
UIApplicationDidFinishLaunchingNotification
UIApplicationDidReceiveMemoryWarningNotification
UIApplicationProtectedDataDidBecomeAvailable
UIApplicationProtectedDataWillBecomeUnavailable
UIApplicationSignificantTimeChangeNotification
UIApplicationUserDidTakeScreenshotNotification
UIApplicationWillChangeStatusBarOrientationNotification
UIApplicationWillChangeStatusBarFrameNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillResignActiveNotification
UIApplicationWillTerminateNotification
UIContentSizeCategoryDidChangeNotification
|