AppDelegate 方法詳解

 iOS 程序啓動時總會調用application:didFinishLaunchingWithOptions:,其中第二個參數launchOptions爲NSDictionary類型的對象,裏面存儲有此程序啓動的緣由。

launchOptions中的可能鍵值見UIApplication Class Reference的Launch Options Keys節 。html

  • 若用戶直接啓動,lauchOptions內無數據;
  • 若由其餘應用程序經過openURL:啓動,則UIApplicationLaunchOptionsURLKey對應的對象爲啓動URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey對應啓動的源應用程序的bundle ID (NSString);
  • 若由本地通知啓動,則UIApplicationLaunchOptionsLocalNotificationKey對應的是爲啓動應用程序的的本地通知對象(UILocalNotification);
  • 若由遠程通知啓動,則UIApplicationLaunchOptionsRemoteNotificationKey對應的是啓動應用程序的的遠程通知信息userInfo(NSDictionary);
  • 其餘key還有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
    UIApplicationLaunchOptionsNewsstandDownloadsKey。
若是要在啓動時,作出一些區分,那就須要在下面的代碼作處理。
好比:您的應用能夠被某個其它應用調起(做爲該應用的子應用),要實現單點登陸,那就須要在啓動代碼的地方作出合理的驗證,並跳過登陸。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSURL *url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
    if(url)
    {
    }
    NSString *bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
    if(bundleId)
    {
    }
    UILocalNotification * localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if(localNotify)
    {
    }
    NSDictionary * userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo)
    {
    }

}


-  (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"應用程序將要進入非活動狀態,即將進入後臺");
}
在應用程序將要由活動狀態切換到非活動狀態時候,要執行的委託調用,如 按下 home 按鈕,返回主屏幕,或全屏之間切換應用程序等。                                        
說明:當應用程序將要進入非活動狀態時執行,在此期間,應用程序不接收消息或事件,好比來電話了。

三、- (void)applicationDidEnterBackground:(UIApplication *)application
{
      NSLog(@"若是應用程序支持後臺運行,則應用程序已經進入後臺運行"); 
}

說明:當程序被推送到後臺的時候調用。因此要設置後臺繼續運行,則在這個函數裏面設置便可


四、-  (void)applicationWillEnterForeground:(UIApplication *)application
{
      NSLog(@"應用程序將要進入活動狀態,即將進入前臺運行");
}
說明:當程序從後臺將要從新回到前臺時候調用,這個恰好跟上面的那個方法相反。

五、- (void)applicationDidBecomeActive:(UIApplication *)application
{
     NSLog(@"應用程序已進入前臺,處於活動狀態");
}
說明:當應用程序進入活動狀態時執行,這個恰好跟上面那個方法相反 。

六、-  (void)applicationWillTerminate:(UIApplication *)application
{
     NSLog(@"應用程序將要退出,一般用於保存數據和一些退出前的清理工做"); 
}
說明:當程序將要退出是被調用,一般是用來保存數據和一些退出前的清理工做。這個須要要設置UIApplicationExitsOnSuspend的鍵值。

七、-  (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    NSLog(@"系統內存不足,須要進行清理工做");
}
說明:iPhone設備只有有限的內存,若是爲應用程序分配了太多內存操做系統會終止應用程序的運行,在終止前會執行這個方法,一般能夠在這裏進行內存清理工做防止程序被終止。

八、-(void)applicationSignificantTimeChange:(UIApplication *)application
{
    NSLog(@"當系統時間發生改變時執行");
}
說明:當系統時間發生改變時執行

九、-  (void)application:(UIApplication)application  willChangeStatusBarFrame:(CGRect)newStatusBarFrame
{
   NSLog(@"StatusBar框將要變化");
}
說明:當StatusBar框將要變化時執行

十、-  (void)application:(UIApplication*)application willChangeStatusBarOrientation:
(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
{
}
說明:當StatusBar框方向將要變化時執行

十一、- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
{
}
說明:當經過url執行

十二、-  (void)application:(UIApplication*)application  didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
{
}
說明:當StatusBar框方向變化完成後執行

1三、-  (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame
{
}
說明:當StatusBar框變化完成後執行

另外還有一些協議方法須要知道:
Handling Remote Notifications  (處理遠程消息)

-(void)  application:(UIApplication *)  applicationdidReceiveRemoteNotification:(NSDictonary *) userinfo
說明:當一個運行着的應用程序收到一個遠程的通知 發送到委託去...
-(void)  application:(UIApplication *)  applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken
說明:當一個應用程序成功的註冊一個推送服務(APS) 發送到委託去...
-(void)  application:(UIApplication *)  applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError *) error
說明:當 APS沒法成功的完成向 程序進程推送時 發送到委託去...

Handling Local Notification (處理本地消息)app

-(void)  application:(UIApplication *)  applicationdidReceiveLocalNotification:(UILocalNotification *)notification
說明:當一個運行着的應用程序收到一個本地的通知 發送到委託去...

Responding to Content Protections Changes(響應受保護內容的改變)函數

-applicationProtectedDataWillBecomeUnavailable:
說明:通知委託,受保護的文件當前變爲不可用的
-applicationProtectedDataWillBecomeAvailable:
說明:通知委託  受保護的文件當前變爲可用
部份資料來源於:http://www.cnblogs.com/worldtraveler/p/4759602.html
相關文章
相關標籤/搜索