Domanda

Sono voler all'utente di accettare un accordo prima l'applicazione viene avviata. Così nel appDelegate.m Ho il seguente:

- (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 problema è che l'altro non viene mai chiamato quando l'utente preme Annulla. L'altro problema è che io non sono sicuro di come fermare l'applicazione di continuare. Da quello che ho trovato, Apple non vuole di forzare l'applicazione per vicino. È corretto? Come devo fare per l'attuazione del presente? Grazie per tutto il vostro aiuto.

È stato utile?

Soluzione

Sì, Apple rifiuterà l'applicazione se si forza per uscire. Posso dire ;-) Un altro UIAlertView dicendo che l'utente non può continuare senza accettare dovrebbe de il trucco (Basta non mettere qualsiasi tasto su di esso in modo che l'utente non può respingerlo)

A proposito della portata d'altro, lo fa non passa attraverso di essa, o l'UIAlertView non mostra? Verificare con un punto di interruzione. Più ulteriormente più, non è quando i mezzi (buttonIndex == 0) che l'utente ha toccato il pulsante "Annulla"

Altri suggerimenti

Ho avuto successo con questo metodo delegato invece:

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

E assicurarsi che l'applicazione utilizza le proprietà cancelButtonIndex e firstOtherButtonIndex della alertView in modo che si elabora il tasto corretto; Credo che il pulsante Annulla è di solito indice zero al momento, ma questo potrebbe potenzialmente cambiare.

Il metodo consigliato per gestire un EULA è quello di presentarla quando si presenta l'applicazione per iTunes. Questo consente a un utente finale per leggere il contratto di licenza prima di scaricare l'applicazione.

Se si vuole forzare l'utente ad accettare un contratto di licenza prima di utilizzare l'applicazione, si dovrebbe probabilmente mettere l'accordo in un file HTML che è possibile incorporare all'interno dell'applicazione. Visualizzare il codice HTML in un UIWebView quando la vostra applicazione si avvia. (Solo poche righe di codice.) Non cercare di spremere in un avviso.

Non sei autorizzato a "uscire" l'applicazione. Si potrebbe desiderare di presentare il contratto in una WebView con le opzioni "declino" in una barra degli strumenti "Accetta" e o come pulsanti sulla pagina web. Se l'utente seleziona "Rifiuto", allora si può pop un avviso che chiede poi di eliminare l'applicazione dal proprio dispositivo. L'idea è che possono scorrere in tutto il WebView, ma non continuerà fino a colpire accetta.

Non sono sicuro se Apple permetterà questo, sarà certamente vanificare gli utenti finali.

per il problema numero due: sì Apple non vuole smettere l'applicazione. Ma cosa si può fare per costringere l'utente a chiudere l'applicazione sul proprio: è sufficiente mostrare una schermata vuota. Ma io non sono sicuro se Apple avrebbe anche questo consentirà perché potrebbe essere visto come "nessuna funzionalità" Sono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top