2008-12-03 86 views
5

我正在为我的应用程序添加一个设置包,作为在我的首选项上获取GUI的便宜方式。是否有可能通过我的应用程序中的按钮启动此功能,或者我的用户是否必须始终通过内置设置应用程序手动访问它?如何从我的应用程序启动我的设置包?

回答

9

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

请参阅this document,应用程序首选项部分。下面是从出台了相关的部分:

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

当您的应用程序只有几个选项或者有用户可能想要定期更改的选项时,您应该仔细考虑设置应用程序是否适合他们。例如,实用程序应用程序在其主视图背面提供了自定义配置选项。对视图的特殊控制将其翻转以显示选项,而另一个控件则将视图翻转回来。对于简单的应用程序,这种类型的行为可以立即访问应用程序的选项,对于用户来说比去设置要方便得多。

更新

的链接已失效。设置包上的This is a similar document

+0

该链接现在指向一个不存在的文档。 – 2014-01-27 10:07:56

1

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

4

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

例如,我的应用程序是一个实用程序应用程序,它有一个小UI,用于FlipSide上的一些设置(用户在按下“i”按钮时获得的视图)。

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

  1. 在一个伟大的系列赛,从iPhone的BootCamp报道,斯科特Leberknight提到了路过,他告诉我们,一个应用程序的用户默认设置可能会或可能不会在设置应用程序集成。

  2. 从用于BubbleLevel iphone的官方显影剂页面的示例代码使用偏好用于存储电平的校准(其在另一面视图中设置)

以下是LevelAppDelegate的方法。当应用程序启动米时装载的偏好,并终止时将其保存:

// 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. 对于优先级的持久性(相对于应用程序的数据坚持文档,数据库或高速缓存),你有两个选择 我)使用系统设置应用编辑 II)在您的应用程序

    创建自己的控件

无论哪种情况,您都可以使用NSUserDefaults作为实际的持久性。

+0

我在一次技术会谈中问过一位iPhone工程师这件事,他说你不能那样做。他建议我提交一个错误,以便Apple可以确定这是否是一个受欢迎的请求。 – bbrown 2009-05-13 04:32:33

1

我刚刚看到Aka-aki应用程序直接带我到设置应用程序的推送通知屏幕。这是我第一次发布它。所以它一定是可能的。 :)

+1

如果与位置一样,第一次尝试使用推送时会出现内置OS提示,那么我不会感到惊讶。 – 2011-03-06 19:03:42

2

我不知道有什么办法从您的应用程序启动Settings.app。但是,为什么不将这些设置正确地集成到您的应用中?你可以使用InAppSettingsKit来做到这一点。

5

对于iOS5的,你可以直接打开设置:

[UIApplication的sharedApplication]的OpenURL:[NSURL URLWithString:@ “首选项://”]];

+0

在iOS 6或7中不能正常工作:( – sup 2013-10-13 08:07:07

相关问题