iPhone一次性事件编程

iPhone一次性事件编程,iphone,xcode,events,Iphone,Xcode,Events,如何使我的应用程序仅在他们首次启动应用程序时才显示某些内容。示例:他们打开我的应用程序,会出现一个警报,说“你想玩教程吗?”然后,如果他们关闭应用程序,然后重新打开,它将不再显示 谢谢您可以在属性存储中存储一个布尔值,说明这是否是第一次,然后在应用程序启动时检查该值。有关持久存储数据的更多提示: 方法1:使用全局用户首选项系统。您可以这样做,但它可能会被认为有点黑客行为,因为它是用来存储用户偏好的,我认为这是一个灰色区域,因为用户在这里没有明确的控制权。在任何情况下,请查看的文档以了解如何做到这

如何使我的应用程序仅在他们首次启动应用程序时才显示某些内容。示例:他们打开我的应用程序,会出现一个警报,说“你想玩教程吗?”然后,如果他们关闭应用程序,然后重新打开,它将不再显示


谢谢

您可以在属性存储中存储一个布尔值,说明这是否是第一次,然后在应用程序启动时检查该值。

有关持久存储数据的更多提示:

方法1:使用全局用户首选项系统。您可以这样做,但它可能会被认为有点黑客行为,因为它是用来存储用户偏好的,我认为这是一个灰色区域,因为用户在这里没有明确的控制权。在任何情况下,请查看的文档以了解如何做到这一点

方法2:写入一个文件,该文件的存在表明教程是否已被查看。通过调用
NSData
对象的方法,可以轻松地创建一个包含该对象的文件。稍后,您可以使用该类检查该文件是否存在

示例代码:

- (NSString*) filename {
  NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                       NSUserDomainMask, YES);
  NSString* documentsDirectory = [paths objectAtIndex:0];
  return [documentsDirectory stringByAppendingPathComponent:@"notFirstTime"];
}

- (void) setNotFirstTime {
  NSData* data = [[[NSData alloc] init] autorelease];
  [data writeToFile:[self filename] atomically:YES];
}

- (BOOL) isNotFirstTime {
  return [[NSFileManager defaultManager] fileExistsAtPath:[self filename]];
}

我建议使用NSUserDefaults:

- (void)openOneTime
{
    NSUserDefaults*        defaults = [NSUserDefaults standardUserDefaults];
    static const NSString* kKey = @"One Time Key";
    NSObject*              keyValue = [defaults  objectForKey:kKey];

    if (keyValue == nil)
    {
        [self doMyOneTimeThing]; // pop a dialog, etc...
    }

    // Adds an object for our key which will get found the next time around,
    // bypassing the above code block. The type and value of the object is
    // not important; what matters more is that an object exists for that
    // key at all.

    [defaults setBool:YES forKey:kKey];
}