Question

Je veut l'utilisateur d'accepter un accord avant l'application est lancée. Ainsi, dans le appDelegate.m je suit:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    defaults = [NSUserDefaults standardUserDefaults];

    if(![defaults boolForKey:@"warningAccepted"]){
        UIAlertView *alert;
        alert = [[[UIAlertView alloc] initWithTitle:@"Warning" message:@"Message... To continue, select \"OK\". To close the app, select \"Cancel\"." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil] autorelease];
        [alert show];
    }

    return YES;
}

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0){
        [defaults setBool:YES forKey:@"warningAccepted"];
        [defaults synchronize];

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            [window addSubview:mainNavController.view];
        } else {
            [window addSubview:tabBarController.view];
        }

        [window makeKeyAndVisible];
    } else {
        // Close App, User hit cancel.
        UIAlertView *alert;
        alert = [[[UIAlertView alloc] initWithTitle:@"App Cannot Continue" message:@"The application cannot run until warning is accepted." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease];
        [alert show];
    }

}

Un problème est que l'autre obtient jamais appelé lorsque l'utilisateur clique annuler. L'autre problème est que je ne suis pas sûr de savoir comment arrêter l'application de continuer. D'après ce que j'ai trouvé, Apple ne veut pas que vous forcer l'application à proximité. Est-ce exact? Comment dois-je aller sur la mise en œuvre cela? Merci pour toute votre aide.

Était-ce utile?

La solution

Oui, Apple va rejeter votre demande si vous forcez pour quitter. Je peux dire ;-) Un autre UIAlertView dire que l'utilisateur ne peut pas continuer sans accepter devrait dé l'affaire (Il suffit de ne pas mettre sur le bouton si l'utilisateur ne peut pas rejeter)

A propos de la portée d'autre, il ne passe pas à travers, ou l'UIAlertView ne montre pas? Vérifiez avec un point d'arrêt. De plus, n'est pas lorsque les moyens de (buttonIndex == 0) que l'utilisateur a touché le bouton « Annuler »

Autres conseils

J'ai eu du succès en utilisant cette méthode déléguée à la place:

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

Et assurez-vous que votre application utilise les propriétés cancelButtonIndex et firstOtherButtonIndex du alertView afin que vous traitez le bouton correct; Je pense que le bouton d'annulation est généralement l'indice zéro au moment, mais cela pourrait changer.

La méthode recommandée pour gérer un contrat de licence est de le soumettre lorsque vous soumettez l'application iTunes. Cela permet à un utilisateur final pour lire le contrat de licence avant de télécharger votre application.

Si vous voulez forcer l'utilisateur à accepter un contrat de licence avant d'utiliser l'application, vous devriez probablement mettre l'accord dans un fichier HTML que vous pouvez intégrer dans l'application. Afficher le code HTML dans un UIWebView lorsque votre application démarre. (Seulement quelques lignes de code.) Ne pas essayer de le presser dans une alerte.

Vous n'êtes pas autorisé à « sortie » de l'application. Vous pouvez présenter le contrat de licence dans une WebView avec des options « Accepter » et « déclin » dans une barre d'outils ou sous forme de boutons sur la page Web. Si l'utilisateur de « Déclin », alors vous pouvez sauter une alerte demandant alors de supprimer l'application de leur appareil. L'idée est qu'ils peuvent faire défiler WebView, mais pas continuer jusqu'à ce qu'ils atteignent accepter.

Je ne suis pas sûr si Apple va permettre cela, il va certainement frustrer vos utilisateurs finaux.

pour le numéro de problème à deux: oui Apple ne veut pas quitter l'application. Mais ce que vous pouvez faire pour forcer l'utilisateur à quitter l'application sur son propre: montrer simplement un écran vide. Mais je ne suis pas sûr si Apple aurait même cela permettrait parce qu'il pourrait être considéré comme « pas de fonctionnalité ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top