我正在为我的应用程序添加一个设置包,作为一种获得我偏好的 GUI 的廉价方式。是否可以从我的应用程序中的按钮启动它,或者我的用户是否总是必须通过内置的设置应用程序手动访问它?
6 回答
他们可能必须转到设置应用程序,具体取决于您的操作方式。
请参阅本文档的“应用程序首选项”部分。以下是介绍中的相关部分:
将您的应用程序首选项添加到设置应用程序最适合生产力风格的应用程序以及您的首选项值通常配置一次然后很少更改的情况。例如,邮件应用程序使用这些首选项来存储用户的帐户信息和邮件检查设置。因为设置应用程序支持分层显示首选项,所以当您有大量首选项时,从设置应用程序中操作您的首选项也更合适。在您的应用程序中提供相同的首选项集可能需要太多屏幕,并可能导致用户混淆。
当您的应用程序只有几个选项或用户可能希望定期更改选项时,您应该仔细考虑设置应用程序是否适合他们。例如,实用程序应用程序在其主视图的背面提供自定义配置选项。视图上的一个特殊控件将其翻转以显示选项,另一个控件将视图翻转回来。对于简单的应用程序,这种类型的行为提供了对应用程序选项的即时访问,并且比转到设置更方便用户。
更新
链接已过期。这是关于设置捆绑包的类似文档。
对于 iOS5,您可以直接打开设置:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
回答了我自己的问题:您确实可以使用 NSUserDefaults 来保存您自己的应用程序首选项,而无需与系统设置集成。
例如,我的应用程序是一个实用程序应用程序,它有一个小的 UI,用于 FlipSide 上的几个设置(用户按下“i”按钮时的视图)。
请注意,我从两个来源找到了此信息。
在 iPhone BootCamp 的一系列精彩报告中,Scott Leberknight 顺便提到,他被告知应用程序用户默认设置可能会或可能不会集成到设置应用程序中。
来自 iphone 官方开发者页面的 BubbleLevel 示例代码使用首选项来存储级别的校准(在反面视图上设置)
以下是 LevelAppDelegate.m 中的方法,它们在应用程序启动时加载首选项,并在应用程序终止时保存它:
// Invoked after the application has been launched and initialized but before it has received its first event.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Set up the level view controller
levelViewController = [[LevelViewController alloc] init];
[window addSubview:levelViewController.view];
// Restore calibration for device
float restoredOffset = [[NSUserDefaults standardUserDefaults] floatForKey:BubbleLevelCalibrationOffsetKey];
levelViewController.calibrationOffset = restoredOffset;
}
// Invoked immediately before the application terminates.
- (void)applicationWillTerminate:(UIApplication *)application {
float calibrationOffset = levelViewController.calibrationOffset;
NSNumber *offset = [NSNumber numberWithFloat:calibrationOffset];
[[NSUserDefaults standardUserDefaults] setObject:offset forKey:BubbleLevelCalibrationOffsetKey];
}
但是,我想对原始问题的正确答案是:
不 - 你不能从你自己的应用程序启动设置 UI(我还没有看到任何方法来做到这一点 - 我猜可能是错的 - 但我很确定即使你可以从你的应用程序启动设置,比如说URL 可用于启动 Safari 的方式 - 您将无法从“设置”应用程序返回到您的应用程序,这会破坏目的)。
对于首选项级别的持久性(相对于应用程序数据持久保存在文档、数据库或缓存中),您有 2 个选择 i)使用系统设置应用程序进行编辑 ii)在您的应用程序中创建自己的控件
在任何一种情况下,您都可以使用 NSUserDefaults 来实现实际的持久性。
我不知道从您的应用程序启动 Settings.app 的任何方法。但是,为什么不将设置直接集成到您的应用程序中呢?您可以使用InAppSettingsKit非常轻松地做到这一点。
不,你不能——他们必须退出你的应用程序并启动设置。这是一种痛苦,如上所述,这是您必须做出的设计决定。
我刚刚看到 Aka-aki 应用程序将我直接带到设置应用程序的推送通知屏幕。我第一次启动它时它就这样做了。所以应该是可以的。:)