`
zhy584520
  • 浏览: 184139 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ios 应用第一次安装取读Settings.bunble默认值问题

    博客分类:
  • IOS
 
阅读更多

问题描述:

当应用第一次安装到设备上时,第一次运行,会读取默认的设置(Settings.bunble),这样会导致应用第一次运行会报错。

解决办法:

在程序的入口的地方加入以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSString *serverAddr = [[NSUserDefaults standardUserDefaults] stringForKey:@"ServerAddr"];
    if(!serverAddr) {
        [self registerDefaultsFromSettingsBundle];
    }
    
    [application registerForRemoteNotificationTypes:
     UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound ];
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *string = [formatter stringFromDate:date];
    NSLog(@"%@", string);
    [formatter release];
    
    UIViewController *viewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController"
                                                                bundle:nil];
    self.rootViewController = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.rootViewController.navigationBarHidden = YES;
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.rootViewController = self.rootViewController;
    [self.window makeKeyAndVisible];
    return YES;
}
- (void)registerDefaultsFromSettingsBundle {
    NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
    if(!settingsBundle) {
        NSLog(@"Could not find Settings.bundle");
        return;
    }
    
    NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
    NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
    
    NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
    for(NSDictionary *prefSpecification in preferences) {
        NSString *key = [prefSpecification objectForKey:@"Key"];
        if(key) {
            [defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
        }
    }
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
    [defaultsToRegister release];
}
 

 

分享到:
评论

相关推荐

    AcknowledgementsBundle, 轻松添加 Settings.bundle,使用 CocoaPods'你的iOS应用程序.zip

    AcknowledgementsBundle, 轻松添加 Settings.bundle,使用 CocoaPods'你的iOS应用程序 AcknowledgementsBundle轻松添加带有 CocoaPods的Settings.bundle,'你的iOS应用程序。 安装将 pod'AcknowledgementsBundle' ...

    iOS旧版应用下载v5.0.zip

    在iOS操作系统中,旧版应用下载是一个常见的需求,特别是在用户希望保持特定软件兼容性或避免新版本中的问题时。标题“iOS旧版应用下载v5.0.zip”表明这是一个资源包,提供了iOS系统旧版本(v5.0)的应用程序。这种...

    swift-iOS开发中第一次安装app或者更新app之后启动时增加动画效果

    当用户第一次安装或更新应用后,启动时的动画效果可以增强品牌形象,吸引用户注意力,并提供视觉上的愉悦感。本篇将详细介绍如何在Swift中实现这一功能。 首先,我们需要了解iOS中的动画原理。iOS提供了Core ...

    iOS旧版应用下载v5.1.zip

    用户可以通过iTunes或其他第三方工具将这些.ipa文件安装到他们的iOS设备上,以恢复到v5.1版本的应用程序。 总的来说,这个压缩包对于那些需要特定版本应用的iOS用户来说是宝贵的资源。它提供了一个途径,让用户能够...

    高仿微信,iOS应用开发模板.zip ios 开发模板

    高仿微信,iOS应用开发模板.zip ios 开发模板。高仿微信,iOS应用开发模板.zip ios 开发模板。高仿微信,iOS应用开发模板.zip ios 开发模板。高仿微信,iOS应用开发模板.zip ios 开发模板。高仿微信,iOS应用开发...

    IOS Settings 设置 Object-C

    在iOS应用开发中,`iOS Settings` 是一个关键部分,它允许用户自定义应用程序的特定选项和偏好。本文将深入探讨如何使用Objective-C语言来创建和管理自定义的设置界面,以及利用XIB(Interface Builder)进行高效...

    用HTML5开发ios应用

    Cordova将Web应用封装在一个本地容器中,并通过插件访问设备的硬件功能,如相机、GPS和加速度计。 2. **React Native**:虽然React Native主要是用JavaScript开发原生应用,但它也可以与HTML5结合使用。开发者可以...

    ios判断App是否安装.

    在iOS开发过程中,有时候我们需要判断用户设备上是否已经安装了某个特定的应用程序。这种需求常见于应用间跳转或推荐安装等场景。本文将详细介绍如何通过自定义URL Scheme的方式实现iOS应用程序之间相互检测是否安装...

    SettingsBundleDemo

    【SettingsBundleDemo】是一个用于演示如何使用iOS应用中的`SettingsBundle`功能的示例项目。在iOS开发中,`SettingsBundle`允许开发者为他们的应用程序创建一个自定义的设置界面,用户可以在设备的“设置”应用中...

    ios-iOS-本地应用分发.zip

    标题"ios-iOS-本地应用分发.zip"暗示了这个压缩包包含了一个解决方案,使得在没有通过App Store的情况下,也能在iOS设备上安装应用程序。描述中提到的链接指向了一个GitHub仓库...

    iOS旧版应用下载v4.0.zip

    这个压缩包中的"iOS旧版应用下载v4.0.exe"文件很可能是一个安装程序,用于帮助用户在电脑上安装iTunes的一个特定版本——12.6.5.3。这是因为在较新的iTunes版本中,苹果移除了直接下载App Store中旧版本应用的功能,...

    iOS旧版应用下载v5.0.exe

    IOS旧版应用下载,抓包

    触觉反馈及蓝牙低功耗和iOS应用程序.zip

    触觉反馈及蓝牙低功耗和iOS应用程序.zip触觉反馈及蓝牙低功耗和iOS应用程序.zip触觉反馈及蓝牙低功耗和iOS应用程序.zip触觉反馈及蓝牙低功耗和iOS应用程序.zip触觉反馈及蓝牙低功耗和iOS应用程序.zip触觉反馈及蓝牙...

    iOS旧版应用下载v5.0 By:Time丨Brand.zip

    iTunes曾经是苹果用户管理和同步iOS设备的主要工具,包括安装应用程序。用户可以通过iTunes下载和安装App Store中的应用,也可以通过连接设备并选择备份或恢复来管理自己的iOS应用库。 在压缩包子文件的文件名称...

    iOS获取手机安装的所有应用信息(bundle id,icon,名称等)

    在iOS开发中,有时我们需要获取用户设备上安装的所有应用程序的相关信息,例如应用的bundle ID、图标(icon)、名称等。这个任务通常对于系统分析、数据分析或者个性化推荐等场景很有用。在提供的标题和描述中,提到...

    IOS应用源码——PSBackgroundCurtain for iOS.rar

    【标题】"IOS应用源码——PSBackgroundCurtain for iOS.rar" 提供的是一个针对iOS平台的开源项目,PSBackgroundCurtain。这个项目主要关注的是如何在iOS应用中实现后台运行时的背景窗帘效果,它允许用户自定义应用...

    iOS 9应用开发入门经典.第7版 .pdf

    《iOS 9应用开发入门经典》是为想要涉足iOS应用开发的初学者量身打造的一本权威指南。这本书的第七版全面涵盖了iOS 9的新特性、工具和技术,旨在帮助读者快速掌握开发iOS应用的核心技能。 iOS 9是苹果公司推出的...

    IOS应用源码——pjproject-1.12.rar

    "pjproject-1.12.rar" 是一个包含iOS应用源码的压缩包,版本为1.12。这个项目可能是一个iOS开发的开源工程,提供了深入理解iOS应用程序内部工作原理的机会,对于开发者来说,是学习和研究iOS编程的一个宝贵资源。 ...

    IOS应用源码——NES-0.31.zip

    【标题】"IOS应用源码——NES-0.31.zip"揭示了这是一份针对iOS平台的应用程序源代码,版本号为0.31。NES在这里可能代表“Nintendo Entertainment System”,一个经典的家用游戏机,也可能只是一个项目或应用的缩写。...

Global site tag (gtag.js) - Google Analytics