OC--UIApplication基礎知識整理

UIApplication

UIApplication屬性和方法
    //獲得UIApplication
    UIApplication *application=[UIApplication sharedApplication];
    
    //獲得UIApplication Delegate對象
    [application delegate];
    
    //UIWindow數(shù)組
    [application windows];
    //UIWindow數(shù)組中最后調(diào)用makeKeyAndVisible方法的UIWindow對象
    [application keyWindow];

    [application beginIgnoringInteractionEvents];//開始忽略Event
    //...中間調(diào)用動畫等操作
    [application endIgnoringInteractionEvents];//結束忽略Event
    
    application.applicationSupportsShakeToEdit = YES;  //晃動是否有撤銷或者重做動作
    
    NSURL *URL=nil;
    //不設置options,啟動Safari方式打開這個Link的代表的網(wǎng)站
    [application openURL:URL options:@{} completionHandler:nil];
    
    //設置options @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES}
    //打開Universal Link所對應的App
    [application openURL:URL options:@{UIApplicationOpenURLOptionUniversalLinksOnly : @YES} completionHandler:nil];
    
    //不讓手機休眠
    application.idleTimerDisabled = YES;
    
    //隱藏狀態(tài)條
    [application setStatusBarHidden:YES];
    [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    
    //設置狀態(tài)條的樣式
    [application setStatusBarStyle:UIStatusBarStyleDefault];
    [application statusBarStyle];
    
    //設置狀態(tài)條的方向
    [application setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
    
    //狀態(tài)條的Frame
    [application statusBarFrame];
    
    //網(wǎng)絡是否可見--小菊花
    [application isNetworkActivityIndicatorVisible];
    
    //badge數(shù)字--icon小紅點
    application.applicationIconBadgeNumber = 2;
    
    //屏幕的方向
    [application userInterfaceLayoutDirection];
    
    //遠程通知
    UIUserNotificationType  types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
    UIUserNotificationSettings  *mySettings  = [UIUserNotificationSettings settingsForTypes:types categories:nil];
    [application registerUserNotificationSettings:mySettings]; //注冊遠程推送通知
    
    [application registerForRemoteNotifications];//注冊
    [application unregisterForRemoteNotifications];//注銷
    
    
    //本地通知  IOS10已經(jīng)修改怖辆,由于項目沒用本地推送宾尚,沒有整理
    NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    localNotif.fireDate = date;  //時間
    localNotif.timeZone = [NSTimeZone localTimeZone]; //時區(qū)
    localNotif.repeatInterval = NSCalendarUnitMinute; //間隔
    localNotif.soundName = UILocalNotificationDefaultSoundName; //聲音
    localNotif.alertBody = @"Local Test";   //通知內(nèi)容
    localNotif.applicationIconBadgeNumber = 1;  //數(shù)字標示
    localNotif.userInfo = @{@"key":@"test"};    //info
    [application scheduleLocalNotification:localNotif]; //注冊通知
    
    [application presentLocalNotificationNow:localNotif]; //立即通知
    [application cancelAllLocalNotifications]; //取消所有通知
    [application cancelLocalNotification:localNotif]; //取消特定的通知
    
    NSArray *arr = [application scheduledLocalNotifications];
    
    //后臺運行相關
    [application applicationState]; //app狀態(tài)
    [application setMinimumBackgroundFetchInterval:3600]; //設置后臺運行時間
    NSTimeInterval remainTime = [application backgroundTimeRemaining]; //app后臺運行的時間
    NSLog(@"remainTIme = %f",remainTime);
    int state = [application backgroundRefreshStatus]; //后臺刷新的狀態(tài)
    NSLog(@"state = %d",state);
    [application beginBackgroundTaskWithName:@"taskOne" expirationHandler:^{}];
    [application beginBackgroundTaskWithExpirationHandler:^{}];
    [application endBackgroundTask:1];
    
    //遠程的控制相關
    [application beginReceivingRemoteControlEvents];
    [application endReceivingRemoteControlEvents];
UIApplicationDelegate方法
// 程序啟動將要完成的時候調(diào)用
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions{

    //被其他應用調(diào)用--UIApplicationLaunchOptionsURLKey
    NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
    if(url) {//做出相應的判斷
        if ([[url scheme] isEqualToString:@"myapp"]) {
            //處理鏈接
        }
    }

    //若用戶直接啟動孝情,lauchOptions內(nèi)無數(shù)據(jù);

    //若由其他應用程序通過openURL:啟動只锭,則UIApplicationLaunchOptionsURLKey對應的對象為啟動URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey對應啟動的源應用程序的bundle ID (NSString)著恩;

    //若由本地通知啟動,則UIApplicationLaunchOptionsLocalNotificationKey對應的是為啟動應用程序的的本地通知對象(UILocalNotification)蜻展;

    //若由遠程通知啟動喉誊,則UIApplicationLaunchOptionsRemoteNotificationKey對應的是啟動應用程序的的遠程通知信息userInfo(NSDictionary);

    return YES;
}

// 程序啟動完成的時候調(diào)用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions{return YES;}

// 當應用程序獲取焦點的時候調(diào)用--恢復數(shù)據(jù)
- (void)applicationDidBecomeActive:(UIApplication *)application{}

// 當應用程序失去焦點的時候調(diào)用--保存數(shù)據(jù)
- (void)applicationWillResignActive:(UIApplication *)application{}

// 當應用程序進入后臺的時候調(diào)用纵顾,
- (void)applicationDidEnterBackground:(UIApplication *)application{}

// 當應用程序進入進臺的時候調(diào)用
- (void)applicationWillEnterForeground:(UIApplication *)application{}

// 程序內(nèi)存警告伍茄,可以一些內(nèi)存的釋放來搶救程序,如SD的緩存清除
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{}

// 當應用程序關閉的時候調(diào)用
- (void)applicationWillTerminate:(UIApplication *)application{}

/**
    以上是UIApplication基本的周期方法施逾,會有很多種情況:
    1敷矫、程序啟動:
    willFinishLaunchingWithOptions -> didFinishLaunchingWithOptions -> applicationDidBecomeActive

    2、程序從前臺退出到后臺
    applicationWillResignActive -> applicationDidEnterBackground

    3汉额、程序從后臺進入到前臺
    applicationWillEnterForeground -> applicationDidBecomeActive

    4沪饺、雙擊home鍵切換程序:
    applicationWillResignActive -> applicationDidEnterBackground

    5、在前臺雙擊home鍵殺死程序
    applicationWillResignActive -> applicationDidEnterBackground -> applicationWillTerminate

    6闷愤、從其他程序前臺雙擊home鍵殺死后臺程序
    applicationWillTerminate

    7整葡、下拉通知欄或者上拉工具欄
    applicationWillResignActive
 
 */


// 當系統(tǒng)時間發(fā)生改變時執(zhí)行
- (void)applicationSignificantTimeChange:(UIApplication *)application{}
//StatusBar相關
// 當StatusBar的方向要將變化時執(zhí)行
- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration {}
// 當StatusBar的方向要將變化時執(zhí)行
- (void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation {}
// 當StatusBar的frame要將變化時執(zhí)行
- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame{}
// 當StatusBar的frame已經(jīng)變化時執(zhí)行
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame {}
//處理SchemeURL [application openURL:url];  IOS8
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return YES;}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation { return YES;}
//處理SchemeURL  IOS9
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    
}

推送這塊蘋果一直改,IOS7改到IOS10了讥脐,蘋果爹爹厲害遭居,年年在修改推送,項目已經(jīng)一堆判斷旬渠,理解并總結iOS7-10推送通知流程
最后還是用第三方(極光俱萍、個推),感謝他們??

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末告丢,一起剝皮案震驚了整個濱河市枪蘑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖岳颇,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件照捡,死亡現(xiàn)場離奇詭異,居然都是意外死亡话侧,警方通過查閱死者的電腦和手機栗精,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞻鹏,“玉大人悲立,你說我怎么就攤上這事⌒虏” “怎么了薪夕?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赫悄。 經(jīng)常有香客問我寥殖,道長,這世上最難降的妖魔是什么涩蜘? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任嚼贡,我火速辦了婚禮,結果婚禮上同诫,老公的妹妹穿的比我還像新娘粤策。我一直安慰自己,他們只是感情好误窖,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布叮盘。 她就那樣靜靜地躺著,像睡著了一般霹俺。 火紅的嫁衣襯著肌膚如雪柔吼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天丙唧,我揣著相機與錄音愈魏,去河邊找鬼。 笑死想际,一個胖子當著我的面吹牛培漏,可吹牛的內(nèi)容都是我干的良漱。 我是一名探鬼主播松却,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼砰盐,長吁一口氣:“原來是場噩夢啊……” “哼涤躲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喜鼓,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤堂油,失蹤者是張志新(化名)和其女友劉穎惯退,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咒锻,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡冷冗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虫碉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贾惦。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸梆,死狀恐怖敦捧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碰镜,我是刑警寧澤兢卵,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绪颖,受9級特大地震影響秽荤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠横,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一窃款、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牍氛,春花似錦晨继、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唉擂,卻和暖如春餐屎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玩祟。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工腹缩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人空扎。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓庆聘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勺卢。 傳聞我的和親對象是個殘疾皇子伙判,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容