iOS的Settings.Bundle动态配置

前言

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • App Settings.Bundle 写在前边 Settings.Bundle 是App的配置项, 用户和测试可...
    ROBIN2015阅读 3,887评论 1 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • 在iphone里面,应用都会在“设置”里面有个专属的应用设置,选择该菜单界面,用户便可以在其中输入和更改各种选项,...
    啊左阅读 4,575评论 9 11
  • 记得上次我坐火车回家的时候,火车中途上来了一个女子,她一手提个大袋子,鼓鼓囊囊的,另一只手则是拉个小推车,...
    谁识明月心阅读 391评论 0 0
  • 因为志同道合的人本来就少,相处得来的又寥寥无几,所以人生大半就是孤独的状态,但是很多时候,容易孤独可能也是因为本身...
    有糖衣披风的叮当猫阅读 204评论 4 2