Ich arbeite an einer Möglichkeit, einen JA/NEIN-Bildschirm zu präsentieren, den der Benutzer akzeptieren muss, bevor er zur App geht.Verhalten ändert sich, wenn ich von XCode starten
Diese Methode zum Akzeptieren oder Ablehnen wird innerhalb von ApplicationDidFinishLaunching ausgelöst und hat einen Zeitgeber, der in 2 Sekunden (oder wann immer) ausgelöst wird. Es sucht in NSUserDefaults und ruft einen Schlüssel ab, der mir sagt, ob die Vereinbarung akzeptiert wurde oder nicht. Wenn nicht (oder null), starte ich einen ModalViewController, um die Vereinbarung zu präsentieren. Die AppDidFinishLaunching Methode ist praktisch vorformulierten und sieht wie folgt aus:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Add the tab bar controller's view to the window and display.
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
[self performSelector:@selector(checkTheEULA) withObject:nil afterDelay:kDelay];
return YES;
}
Alles funktioniert super. Das Problem ist, es funktioniert nur einmal - wenn ich von Xcode starte. Wenn ich die App stoppe und vom Simulator oder von meinem Gerät aus starte, wird dem Benutzer keine modale Ansicht angezeigt.
Kann mir jemand sagen, was passiert, um dies zu verursachen? Ich nehme an, es hat etwas mit der AppDelegate selbst zu tun? Verlasse ich etwas?
Jede Hilfe wäre sehr geschätzt - ich bin immer noch ziemlich grün :-)
Danke,
- (void)checkTheEULA{
// get value in kAcceptedOrNot key (NSString, either YES NO or nil), assign it to acceptedOrNot
self.acceptedOrNot = [[NSUserDefaults standardUserDefaults] objectForKey:kAcceptedOrNotKey];
if (self.acceptedOrNot == nil || [self.acceptedOrNot isEqualToString:@"NO"]) {
NSLog(@"The value of kAcceptedOrNot is %@ (nil or NO). This means that the EULA has never been launched, or has launched but has been UNaccepted", self.acceptedOrNot);
NSLog(@"I'm launching the ModalView to give the user the chance to accept the EULA");
[self showModalView];
} else {
// else, the value of kAcceptedOrNot exists and is YES, and so no action needs to be taken
NSLog(@"Value of accepteOrNot is %@. (hopefully it's 'YES' :-)", acceptedOrNot);
}
}
Können Sie nach Ihren Code für 'checkTheEULA' tun kann? –
Absolut. Werde es heute Abend tun. Vielen Dank! –
Es gibt eine andere Methode, showModalView, die ich posten kann, aber nicht wusste, wie viel Upstream-Code hier gepostet werden muss. Lass es mich wissen, wenn ich mehr posten sollte. –