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];
}