如何从我的应用程序启动我的设置包?

How do I launch my settings bundle from my application?

提问人:Lounges 提问时间:12/3/2008 最后编辑:Ortwin GentzLounges 更新时间:6/5/2015 访问量:12139

问:

我正在努力为我的应用程序添加一个设置包,作为根据我的偏好获得 GUI 的廉价方式。是否可以从我的应用程序中的按钮启动它,或者我的用户是否始终必须通过内置的设置应用程序手动访问它?

iOS iPhone 可触摸

评论


答:

9赞 Michael Sharek 12/3/2008 #1

他们可能必须转到设置应用程序,具体取决于您的操作方式。

请参阅此文档的“应用程序首选项”部分。以下是引言中的相关部分:

将应用程序首选项添加到“设置”应用程序最适合于生产力风格的应用程序,以及您的首选项值通常配置一次,然后很少更改的情况。例如,“邮件”应用程序使用这些首选项来存储用户的帐户信息和邮件检查设置。由于“设置”应用程序支持按层次结构显示首选项,因此当您有大量首选项时,从“设置”应用程序操作首选项也更合适。在应用程序中提供相同的首选项集可能需要太多屏幕,并且可能会给用户带来混淆。

当应用程序只有几个选项或具有用户可能希望定期更改的选项时,应仔细考虑“设置”应用程序是否适合这些选项。例如,实用程序应用程序在其主视图的背面提供自定义配置选项。视图上的一个特殊控件将其翻转以显示选项,另一个控件将视图翻转回来。对于简单的应用程序,这种类型的行为提供对应用程序选项的即时访问,并且对用户来说比转到“设置”要方便得多。

更新

链接已过期。这是有关设置捆绑包的类似文档

1赞 drewh 12/4/2008 #2

不,你不能 - 他们必须退出你的应用程序并启动设置。这是一件痛苦的事情,如上所述,这是您必须做出的设计决策。

4赞 Rhubarb 1/15/2009 #3

回答了我自己的问题:您确实可以使用 NSUserDefaults 来保存您自己的应用程序首选项,而无需与系统设置集成。

例如,我的应用程序是一个实用程序应用程序,具有一个小 UI,用于 FlipSide 上的几个设置(用户按下“i”按钮时看到的视图)。

请注意,我从两个来源找到了此信息。

  1. 在 iPhone BootCamp 的一系列报告中,Scott Leberknight 顺便提到,他被告知应用程序用户默认值可能会也可能不会集成到设置应用程序中。

  2. BubbleLevel 的 iphone 官方开发者页面中的示例代码使用首选项来存储关卡的校准(在另一侧视图上设置)

下面是 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];
}

然而,我想,原始问题的正确答案是:

  1. 不 - 您无法从自己的应用程序启动设置 UI(我还没有看到任何方法可以做到这一点 - 我猜可能是错的 - 但我很确定,即使您可以从您的应用程序启动设置,比如 URL 可用于启动 Safari 的方式 - 您将无法从“设置”应用程序返回到您的应用程序, 这将违背目的)。

  2. 对于首选项级别的持久性(而不是在文档、数据库或缓存中保留的应用数据),您有 2 种选择 i) 使用系统设置应用程序进行编辑 ii) 在应用中创建自己的控件

无论哪种情况,都可以将 NSUserDefaults 用于实际的持久性。

评论

0赞 bbrown 5/13/2009
在一次技术讲座中,我问了一位iPhone工程师,他说你不能那样做。他建议我提交一个错误,以便苹果可以确定这是否是一个受欢迎的请求。
1赞 Vikram Kriplaney 10/1/2009 #4

我刚刚看到 Aka-aki 应用程序将我直接带到“设置”应用程序的推送通知屏幕。它在我第一次启动它时就这样做了。所以它一定是可能的。:)

评论

1赞 David Moles 3/7/2011
如果像位置一样,在应用程序第一次尝试使用推送时有一个内置的操作系统提示,我不会感到惊讶。
2赞 Ortwin Gentz 4/19/2011 #5

我不知道有什么方法可以从您的应用程序启动 Settings.app。但是,为什么不将设置直接集成到您的应用程序中呢?您可以使用 InAppSettingsKit 非常轻松地执行此操作。

5赞 Tamara 3/20/2012 #6

对于 iOs5,您可以直接打开设置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“prefs://”]];