美文网首页iOS开发知识小集
iOS的Settings.Bundle动态配置

iOS的Settings.Bundle动态配置

作者: mian小爬 | 来源:发表于2018-10-08 18:33 被阅读350次

    前言

    Settings.Bundle是App的配置项,通过配置Settings.Bundle可以修改App的运行环境、显示App的授权信息等等。

    添加Settings.Bundle

    默认项目中是没有Settings.Bundle,需要手动添加。添加完了之后在“设置”中找到“对应的App”即可看到Settings.Bundle的界面。

    添加Settings.Bundle.png
    Settings.Bundle默认的界面.png
    再次运行程序时,程序设置页面不再有settings bundle的设置选项了,双击home键弹出多任务列表,从多任务列表中移除调试的app和系统设置app,再进入系统设置app就可以了

    Settings.Bundle控件类型

    添加控件类型.png
    • TextField(文本框)
    • Title(标题)
    • ToggleSwitch(开关)
    • Slider(滑块)
    • MultiValue(多值)
    • Group(组)
    • Child Pane(子窗格)

    Type:配置类型
    Title:配置项显示的Title
    Identifier: 配置项的标识符,用来获取配置项的配置内容
    Default Value :配置项默认值

    TextField(文本框):

    Autocapitalization Style: 自动大写。有四个值: None(无)、Sentences(句子首字母大写)、Words(单词首字母大写)、All Characters(所有字母大写)。
    Autocorrection Style: 自动纠正拼写,如果开启,你输入一个不存在的单词,系统会划红线提示。有三个值:Default(默认)、No Autocorrection(不自动纠正)、Autocorrection(自动纠正)。
    Keyboard Type: 键盘样式。有五个值:Alphabet(字母表,默认)、Numbers and Punctuation(数字和标点符号)、Number Pad(数字面板)、URL(比Alphabet多出了.com等域名后缀)、Email Address(比Alphabet多出了@)。
    Text Field is Secure: 是否为安全文本。如果设置为YES,则内容以圆点符号出现。

    ToggleSwitch(开关):

    Value for ON:当开关置为ON时,取得的字符串值。
    Value for OFF:当开关置为OFF时,取得的字符串值。

    Slider(滑块)

    Minimum Value: 最小值,Number类型。
    Maximum Value: 最大值,Number类型。
    Min Value Image Filename: 最小值那一端的图片。
    Max Value Image Filename:最大值那一端的图片。
    (图片大小必须为21*21,并且要放在Settings.bundle包内)

    MultiValue(多值)

    Values:值的集合。
    Titles: 标题的集合,与值一一对应。

    Child Pane

    Filename:子plist的文件名。

        //获取SettingsBundle信息
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults removeObjectForKey:@"Identifier值"];
    
        // 修改值
        [userDefaults setValue:@"abc" forKey:@"Identifier值"];
    

    在用户实际修改了setting里的数据之前 , 这时配置数据并没有真正的写入到app的NSUserDefaults中, 此时用NSUserDefaults获取的值都是空的。对此, 可以在- (void)applicationDidBecomeActive:(UIApplication *)application方法中获取信息。

    Settings.Bundle动态配置

    1、创建目录

    在工程目录下创建文件夹Setting以及子文件夹Release和Debug(当然,也可以根据环境来创建,比如:Dev、Test、hotfix等), 并添加到工程中。


    创建目录.png

    2、创建配置

    点击工程文件, 选中info, 在Configurations下点击+, 复制一个Configuration。


    创建配置.png

    3、添加Setting.bundle

    新建Setting.Bundle, 但不要添加到当前Target中, 并分别保存到Release和Debug
    文件夹下:


    添加Settingbundle.png

    4、添加拷贝脚本

    不添加到Target的原因就是 , 我们要用脚本把Setting.Bundle拷贝到ipa中。选中"Target", 切换到Build Phases, 点击+, 选中New Run Script Phase。


    添加拷贝脚本.png

    添加脚本:

    if [ ${CONFIGURATION} = "Debug" ]; then
    cp -r ${PROJECT_DIR}/${PROJECT_NAME}/Setting/Release/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
    fi
    
    if [ ${CONFIGURATION} = "Release" ]; then
    cp -r ${PROJECT_DIR}/${PROJECT_NAME}/Setting/Release/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
    fi
    

    相关文章

      网友评论

        本文标题:iOS的Settings.Bundle动态配置

        本文链接:https://www.haomeiwen.com/subject/mcrjaftx.html