怎樣判斷iOS App是通過哪種途徑啓動的?

  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions

說明:當應用程序啓動時執行,應用程序啓動入口。只在應用程序啓動時執行一次。application參數用來獲取應用程序的狀態、變量等,值得注意的是字典參數:(NSDictionary *)launchOptions,該參數存儲程序啓動的原因。

1.若用戶直接啓動,lauchOptions內無數據;
2.若由其他應用程序通過openURL:啓動,則UIApplicationLaunchOptionsURLKey對應的對象爲啓動URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey對應啓動的源應用程序的bundle ID (NSString);

3.若由本地通知啓動,則UIApplicationLaunchOptionsLocalNotificationKey對應的是爲啓動應用程序的的本地通知對象(UILocalNotification);

4.若由遠程通知啓動,則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)
{
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章