2012-03-12 12 views
8

Jak wszyscy być może wiecie, ponieważ iOS5 ma natywny framework Twittera, który ułatwia publikowanie tweetów z aplikacji.Natychmiastowy alert logowania z ramą Twittera w iOS5?

Czy istnieje sposób na wysłanie alertu, który przekieruje użytkownika do aplikacji ustawień i zapyta o nazwę użytkownika i hasło?

wiem, że mogę rozwiązać problem z następującego kodu:

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

ale to kod nieudokumentowane ..

góry dzięki

Pozdrowienia Billy (mój pierwszy post na SO)

+0

Natychmiastowy alert logowania z ramą serwisu Twitter w iOS6: http: // stackoverflow.com/questions/13946062/twitter-framework-for-ios6-how-to-login-through-settings-from-app – RayofHope

+0

Kod nie działa na iOS 8.2 – David

Odpowiedz

6

Nie musisz tego wdrażać, jeśli skonfigurujesz integrację Twittera, aby utworzyć wpis na Twitterze, a system iOS wykryje, że nie ma skonfigurowanego konta na Twitterze, zrobi to automatycznie za Ciebie!

To jest zrzut ekranu z jednego z moich aplikacji uruchomionych na moim iPhone 4S na iOS 5.1

zniesienie preferencji linków jest w odniesieniu do działań niestandardowych przez dewelopera, jak w menu z linkami do własnych preferencji. To nie dotyczy, ponieważ nie tylko Twitter jest zbudowany w funkcji iOS 5, ale UIAlertView, który wyskakuje, aby powiadomić cię, nie jest obsługiwany przez programistę, jest to automatyczna funkcja iOS.

enter image description here

+0

Dziękuję za odpowiedź, właśnie teraz mam alert, gdy próbuje opublikować, ale mój klient chce osobne menu ustawień z możliwością logowania do Twittera. Może powinienem przekonać mojego klienta, że ​​początkowa myśl jest zła i po prostu użyć "standardowego" zachowania? –

+0

To byłoby najlepiej. Nie tylko zaoszczędziłoby to Ci dużo pracy, ale także sprawiłoby, że aplikacja będzie działać lepiej, ponieważ po prostu uzyskasz dostęp do istniejącej struktury. Jeśli to odpowiedziałeś na twoje pytanie, zaznacz jako prawidłowe. –

0

To nie jest możliwe, choć powinna ona automatycznie poprosi użytkownika, aby zalogować się, jeśli użytkownik nie jest zalogowany już.

Od iOS 5.1 że funkcja została usunięta, jak widać here

8

W iOS5.1 powinniśmy używać TWTweetComposeViewController pokazać okno od jabłoni odrzuca aplikacje używając preferencje: root = Twitterze.

Ale mi się nie podoba pokazano na ekranie tweeta i klawiaturę
więc zorientowali się, aż do ich ukrycia, ale pokazać pop-up ekran.

UPDATE: Jabłko zatwierdził moją aplikację za pomocą tej sztuczki.


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

W jaki sposób Twój kod faktycznie wysyła tweet, jeśli widok kompozycji jest ukryty? – Pwner

2

Tutaj znalazłem sposób:

Wyświetlacz alert niestandardowy, jeśli nie bierze twitter została konfiguracja ustawień urządzenia:

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]; 
      } 
    } 

nadzieję, że ten będzie miało sens :)

+0

Nie jestem zbytnio wdzięczny za użycie przycisku anulowania dla twojego działania i umieszczenie twojego prawdziwego przycisku anulowania w szeregu innych tytułów guzików ... Wydaje się, że jedyną korzyścią jest uproszczenie metody clickedButtonAtIndex: podczas łamania bardzo często Konwencja. –