变更记录
序号 | 录入时间 | 录入人 | 备注 |
---|---|---|---|
1 | 2015-03-18 | Alfred Jiang | - |
2 | 2015-12-18 | Alfred Jiang | - |
方案名称
AppDelegate - iOS APP Launch Options
关键字
AppDelegate \ UIApplication \ iOS程序结构 \ didFinishLaunchingWithOptions \ 应用启动
需求场景
- 需要对应用启动进行类别区分时
参考链接
- NSHipster - UIApplicationDelegate launch Options
- Apple documentation - UIApplication Class Reference
详细内容
iOS 程序启动时总会调用 application:didFinishLaunchingWithOptions: ,其中第二个参数 launchOptions 为 NSDictionary 类型的对象,里面存储有此程序启动的原因。
launchOptions 中的可能键值见 UIApplication Class Reference 的 Launch Options Keys 节。
若用户直接启动, 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){
//
}
}
效果图
(无)
备注
(无)