我正在尝试在第一次启动应用时显示提醒。如果他们稍后进入设置页面并希望再次看到它,我也想显示此警报。我想我可以在NSUserDefaults
中设置一个布尔值。我不太清楚如何做到这一点(假设这种方法是正确的)。我在applicationDidFinishLaunching:options
中想到,我可以获得密钥@"FirstTimeLaunched"
的值,而在applicationWillTerminate
中,我可以将该密钥的对象设置为NO
。如果是这种情况,我如何首次将BOOL
设为YES
?
另外,我还需要在NO
模式下将其设置为didEnterBackground
吗?感谢。
答案 0 :(得分:5)
只需反思它,而不是期待YES
,在应用实际启动时设置变量,并在用户在设置中这样说时将其删除。
发布时:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) {
// show your only-one-time view
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
当用户想要再次看到它时,只需删除密钥:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"hasBeenLaunched"];
访问不存在的密钥时,NSUserDefaults
将返回nil
。
答案 1 :(得分:0)
首次推出应用,因此我认为您不需要将BOOL
设置为NO
。如果移除了应用,则UserDefaults
会被删除。我们在App首次启动应用程序didFinishLaunchingWithOptions:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTimeLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
如果您在Bool
中将NO
设置为applicationWillTerminate
,则每次用户从托盘中杀死应用时,您都会在启动的应用中显示提醒。这又取决于您的业务需求。
答案 2 :(得分:0)
我会采取相反的方法,首先启动检查appHasLaunched的密钥。
如果是,则绕过警报。 如果不是,则显示警报并立即为下次准备好。