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

Ios 如何从应用程序启动设置包?,ios,iphone,cocoa-touch,Ios,Iphone,Cocoa Touch,我正在为我的应用程序添加一个设置包,作为一种在我的首选项上获得GUI的廉价方法。是否可以从我的应用程序中的按钮启动此功能,或者我的用户始终必须通过内置设置应用程序手动访问此功能?他们可能必须转到设置应用程序,具体取决于您的操作方式 请参阅应用程序首选项部分。以下是导言中的相关部分: 将应用程序首选项添加到“设置”应用程序最适合于生产型应用程序,也最适合于您的首选项值通常只配置一次,然后很少更改的情况。例如,邮件应用程序使用这些首选项来存储用户的帐户信息和邮件检查设置。由于“设置”应用程序支持按层

我正在为我的应用程序添加一个设置包,作为一种在我的首选项上获得GUI的廉价方法。是否可以从我的应用程序中的按钮启动此功能,或者我的用户始终必须通过内置设置应用程序手动访问此功能?

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

请参阅应用程序首选项部分。以下是导言中的相关部分:

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

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

更新


链接已过期。在设置包上。

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

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

例如,我的应用程序是一个实用程序应用程序,它的另一面有一个小UI,用于设置一些设置(用户按下“i”按钮时看到的视图)

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

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

  • 来自iphone官方开发者页面的BubbleLevel示例代码使用首选项存储级别校准(在flipside视图上设置)

  • 以下是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进行实际的持久化。

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

    我不知道从你的应用程序启动Settings.app的任何方法。但是,为什么不在应用程序中集成这些设置呢?您可以使用来轻松完成此操作。

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


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

    在一次技术讲座上,我向一位iPhone工程师询问了这一点,他说你不能这么做。他建议我提交一个bug,这样苹果就可以确定这是否是一个流行的请求。如果像定位一样,应用程序第一次尝试使用推送时有一个内置的操作系统提示,我不会感到惊讶。