2012-03-12 12 views
8

Come tutti voi sapete, dal momento che iOS5 è un framework nativo di Twitter che rende facile pubblicare tweet dalla vostra app.Avviso di accesso rapido con framework Twitter in iOS5?

C'è un modo per richiedere un avviso che inoltra l'utente all'app delle impostazioni e chiedere nome utente e password?

so che potrebbe risolvere il problema con il seguente codice:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; 

Ma questo è il codice non documentata ..

Grazie in anticipo

Saluti Billy (Il mio primo post su SO)

+0

Avviso di accesso rapido con framework Twitter in iOS6: http: // stackoverflow.it/questions/13946062/twitter-framework-for-ios6-how-to-login-through-settings-from-app – RayofHope

+0

Il codice non funziona su iOS 8.2 – David

risposta

6

Non è necessario implementarlo, se si imposta l'integrazione di Twitter per fare un post su Twitter e iOS rileva che lì non è impostato un account Twitter, lo farà automaticamente per te!

Questo è uno screenshot di una delle mie applicazioni in esecuzione sul mio iPhone 4S su iOS 5.1

La rimozione dei link Preferenze è in riferimento alle azioni personalizzate dallo sviluppatore, come nel collegare al proprio menu delle preferenze. Questo non si applica perché non solo Twitter è costruito in funzione di iOS 5 ma UIAlertView che si apre per notificarti non è gestito dallo sviluppatore, è una funzione automatica di iOS.

enter image description here

+0

Grazie per la risposta, in questo momento ho ricevuto l'avviso quando cercando di postare ma il mio cliente desidera un menu di impostazioni separate con la possibilità di accedere a Twitter. Forse dovrei convincere il mio cliente che il pensiero iniziale è sbagliato e utilizzare invece il comportamento "standard"? –

+0

Sarebbe meglio. Non solo questo ti farà risparmiare un sacco di lavoro, ma manterrebbe l'app in un migliore stato di funzionamento in cui si avverte semplicemente che si sta accedendo a un framework esistente. Se questo risponde alla domanda, contrassegnare come corretto. –

0

Non è possibile, anche se dovrebbe chiedere automaticamente l'utente per il login, se l'utente non è connesso già.

Come di iOS 5.1 che funzionalità è stata rimossa, come si è visto here

8

In iOS5.1, dovremmo usare TWTweetComposeViewController per mostrare la finestra di dialogo dal momento che Apple rifiuta le app che utilizzano preferenze: root = TWITTER.

Ma, non mi è piaciuto che mostra lo schermo e la tastiera Tweet
così ho capito il modo di nasconderli, ma mostrare pop-up sullo schermo.

UPDATE: Apple ha approvato la mia app usando questo trucco.


enter image description here

TWTweetComposeViewController *viewController = [[TWTweetComposeViewController alloc] init]; 

    //hide the tweet screen 
    viewController.view.hidden = YES; 

    //fire tweetComposeView to show "No Twitter Accounts" alert view on iOS5.1 
    viewController.completionHandler = ^(TWTweetComposeViewControllerResult result) { 
     if (result == TWTweetComposeViewControllerResultCancelled) {    
      [self dismissModalViewControllerAnimated:NO]; 
     } 
    }; 
    [self presentModalViewController:viewController animated:NO]; 

    //hide the keyboard 
    [viewController.view endEditing:YES]; 

    //this approach doesn't work since you can't jump to settings 
// [self dismissModalViewControllerAnimated:NO]; 
+0

In che modo il tuo codice invia effettivamente il tweet se la vista di composizione è nascosta? – Pwner

2

Qui ho trovato il modo:

Mostra avviso personalizzato se nessun account twitter è stato impostato sulle impostazioni del dispositivo:

if (![TWTweetComposeViewController canSendTweet]) { 
      UIAlertView *alertViewTwitter = [[[UIAlertView alloc] 
      initWithTitle:@"No Twitter Accounts" 
      message:@"There are no Twitter accounts configured. You can add or create a Twitter account in Settings." 
      delegate:self 
      cancelButtonTitle:@"Settings" 
      otherButtonTitles:@"Cancel",nil] autorelease]; 

      [alertViewTwitter show]; 
    } 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

      if (buttonIndex==0) { 
       TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init]; 
       if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) { 
        [(id <UIAlertViewDelegate>)ctrl alertView:alertView 
          clickedButtonAtIndex:0]; 
       } 
       [ctrl release]; 
      } 
    } 

Spero che questo avrà senso :)

+0

Non mi piace troppo usare il pulsante Annulla per la tua azione e mettere il tuo pulsante di annullamento reale nella serie di altri titoli di pulsanti ... Sembra che l'unico vantaggio sia la semplificazione del tuo clickedButtonAtIndex: metodo mentre stai rompendo un molto comune convenzione. –

Problemi correlati