給啟動頁加上一頁廣告頁诬留,在收到通知跳應(yīng)用是缨睡,不走啟動頁的rootvc設(shè)置方法。
做的判斷是if(launchOptions){有通知徘铝,走有通知的}else{沒有通知耳胎,走啟動頁}
遇到的問題是:在APP Store更新后打開應(yīng)用,初次安裝庭砍,走不到初次安裝的方法场晶,而是走了啟動頁那一套。
在網(wǎng)上看到:?地址
UIApplication繼承自UIResponder怠缸,的主要作用是提供了iOS程序運行期間的控制和協(xié)作工作诗轻,每個iOS程序運行期間都會有一個UIApplication實例,一般由main函數(shù)的UIApplicationMain函數(shù)完成揭北,而在代碼中可以調(diào)用[UIApplication sharedApplication]方法來得到這個實例(有且僅有一個),比如可以利用它判斷程序狀態(tài):
if([UIApplication sharedApplication].applicationState==UIApplicationStateInactive){
NSLog(@"程序在運行狀態(tài)");
}
新建一個任意類型的iOS應(yīng)用工程扳炬,在AppDelegate.h中會看到
AppDelegate :UIResponder
即本類實現(xiàn)(采納)了一個名叫UIApplicationDelegate的接口吏颖,且表明AppDelegate這個類就是這個工程中UIApplication實例的代理類。
看看main函數(shù):
intmain(intargc,char*argv[])
{
@autoreleasepool{
returnUIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegateclass]));
}
}
這里傳入了代理類到UIApplicationMain函數(shù)中恨樟,UIApplicationMain函數(shù)在生成唯一一個UIApplication的時候就可以把代理類的實例指針告訴這個單例對象了半醉。
在UIApplicationDelegate中有很多方法,最重要無非就是
- (BOOL)application:(UIApplication?*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions劝术。
iOS程序啟動時總會調(diào)用此方法缩多,其中第二個參數(shù)launchOptions為NSDictionary類型的對象,里面存儲有此程序啟動的原因养晋。例如:若用戶直接啟動衬吆,lauchOptions內(nèi)無數(shù)據(jù); 若由其他應(yīng)用程序通過openURL:啟動,則lauchOptions==UIApplicationLaunchOptionsURLKey對應(yīng)的對象為啟動URL(NSURL),lauchOptions==UIApplicationLaunchOptionsSourceApplicationKey對應(yīng)啟動的源應(yīng)用程序的bundle ID (NSString)绳泉。
原因是launchOptions不一定是收到通知逊抡,還有很多別的原因(詳見apple文檔)。