3 次启动 App 后显示 UIAlertview
Posted
技术标签:
【中文标题】3 次启动 App 后显示 UIAlertview【英文标题】:Show UIAlertview after 3 launches App 【发布时间】:2014-10-20 20:13:58 【问题描述】:我想要实现的是当用户在 3 次后打开应用程序时显示 UIAlertview。我在 ViewDidAppear 的 ViewController 中使用下面的代码,但每次打开应用程序时都会显示 UIAlertview。有人可以告诉我我在这里做错了什么吗?
int launches = [[NSUserDefaults standardUserDefaults] integerForKey:@"launchCount"];
if (launches > 3)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"My Alert"
message:@"Some message" delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[[NSUserDefaults standardUserDefaults] setInteger:launches+1 forKey:@"launchCount"];
编辑:我也收到 NSInteger(又名“long”)到“int”警告。这可能是它不起作用的问题吗?
【问题讨论】:
要修复警告,请将int
更改为NSInteger
。
Show uialertview after opening an app after 3 times? 的可能重复项问同一个问题两次的目的是什么?
【参考方案1】:
您应该将该代码移至您的应用委托
-application:didFinishLaunchingWithOptions:
【讨论】:
不,每次打开应用程序时仍会显示警告和警报视图弹出窗口。 检查第一次启动时返回的启动值。此外,您是希望在应用程序在第 3 次启动后每次启动时出现警报,还是仅在第 3 次启动时出现? 如何检查返回的值?是的,我想在应用程序在第 3 次启动后每次启动时显示它。 有三种很好的调试值的方法: 1. 在launches
返回后设置断点(第44 行)。 2. 使用NSLog
将值打印到控制台。 3. 执行步骤 1 并在控制台中输入“po launch”。
看截图,它在启动时显示一个奇怪的值link【参考方案2】:
@AdamPro13 是正确的,您应该将代码移动到您的应用程序委托中的- (void)applicationDidBecomeActive:(UIApplication *)application
。 viewDidAppear
方法可以在每次应用启动时调用多次。如果您希望每次安装只显示一次UIAlertView
,您可以保存BOOL
(如果已显示)或更改测试launches == 4
。类似的东西
NSInteger launches = [[NSUserDefaults standardUserDefaults] integerForKey:@"launchCount"];
BOOL launchAlertShown = [[NSUserDefaults standardUserDefaults] boolForKey:@"launchAlertShown"];
if (launches > 3 && !launchAlertShown)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"My Alert"
message:@"Some message" delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"launchAlertShown"];
[[NSUserDefaults standardUserDefaults] setInteger:launches+1 forKey:@"launchCount"];
您已删除应用程序,而不仅仅是用新版本覆盖,以删除 [NSUserDefaults standardUserDefaults]
的内容。这意味着测试 launches > 3
将保持正确,直到您从正在测试的设备或模拟器中删除应用程序。,
【讨论】:
【参考方案3】:知道了!感谢@AdamPro13
NSInteger launches = [[NSUserDefaults standardUserDefaults] integerForKey:@"launchCount"];
if (launches % 3 == 0)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"My Alert"
message:@"Some message" delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[[NSUserDefaults standardUserDefaults] setInteger:launches+1 forKey:@"launchCount"];
【讨论】:
以上是关于3 次启动 App 后显示 UIAlertview的主要内容,如果未能解决你的问题,请参考以下文章