2012-09-27 10 views
11

Używam TWTweetComposeViewController, aby uzyskać dostęp do konta użytkownika Twittera, które on/ona dodał w Ustawieniach -> Twitter. Gdy aplikacja próbuje uzyskać dostęp do konta na Twitterze, powinno presente alertu z komunikatem podobnym do tego:"[Aplikacja]" Chciałby mieć dostęp do konta na Twitterze Alert nie jest wyświetlany w systemie iOS 6

"[AppName] Would Like Access to Twitter Accounts" 

do którego można dotknąć albo „Nie zezwalaj” lub „OK”. Przypuszczam, że jest to alert wyświetlany przez sam system operacyjny, ponieważ naciśnięcie "OK" w rzeczywistości umożliwia dostęp do Twittera.

Powyższy alert jest wyświetlany, gdy testuję go na urządzeniu iOS 5.x, ale tak nie jest, gdy testuję go na urządzeniu iOS 6. Spodziewam się, że alarm ma być przedstawiona kiedy wysłać następujący komunikat, a ja jeszcze nie otrzymałem mojej aplikacji dostęp do Twitter w ustawieniach:

[TWTweetComposeViewController canSendTweet] 

Jak opisano, to nie zdarza. Czy ktoś wie, czy jest to znany błąd w systemie iOS 6? Nie mogłem znaleźć żadnych wpisów na SO i ponieważ nie mogę znaleźć innego powodu dla innego zachowania, uważam, że to błąd.

FYI, jestem testowania to na dwóch następujących urządzeń:

  • iPhone 4 z iOS 5.1
  • iPhone 4 z iOS 6,0

aktualizacji

używam DETweetComposeViewController, który sprawdza system iOS 5 w następujący sposób:

+ (BOOL)de_isIOS5 
{ 
    return (NSClassFromString(@"NSJSONSerialization") != nil); 
} 

Ale ponieważ klasa NSJSONSerialization jest również reprezentowana w systemie iOS 6, nie powinno to być przyczyną.

Odpowiedz

30

Przez cały dzień sortowałem to samo na iOS 5.1 i iOS 6.0.

Dopóki w ustawieniach jest skonfigurowane konto Twitter, moja aplikacja nie prosi o uprawnienia dostępu na Twitterze w iOS 6.0 tylko po to, aby wyświetlić TWTweetComposeViewController. Zweryfikowałem to, ręcznie wyłączając dostęp do Twittera mojej aplikacji pod numerem Settings > Privacy > Twitter. Z dostępem wyłączonym, jestem właściwie pozbawiony możliwości tworzenia przyjaźni za pomocą TWRequest, ale nadal można wyskoczyć na TWTweetComposeViewController. Otrzymuję monit w iOS 5.1 za każdym razem, dopóki nie udzielę dostępu.

To ma dla mnie sens. Wszystko, co robi TWTweetComposeViewController, to zainicjowanie tweeta, więc jeśli użytkownik ma już skonfigurowane konto na całym Twitterze, powinno to pozwolić na wysłanie tweetów z dowolnego miejsca. Naprawdę jest zbędnym dodatkowym krokiem do uzyskania dostępu na podstawie app.

Jeśli nie ma konta Twitter są jeszcze skonfigurowany, TWTweetComposeViewController poprosi o tej wiadomości tho:

No Twitter Accounts 
There are no Twitter accounts 
configured. You can add or create 
a Twitter account in Settings. 

z poręcznych przycisków „Ustawienia” i „Anuluj”.

Serena do tego: iOS 6 wyświetla również monit tylko z komunikatem "[AppName] Would Like Access to Twitter Accounts" za pierwszym razem, gdy aplikacja żąda dostępu.

Po tym należy zresetować Settings > General > Reset > Reset Location & Privacy, aby odzyskać monit pytaj.Nawet jeśli usuniesz i ponownie zainstalujesz/przebudujesz aplikację, ustawienie "już zadane raz" będzie nadal występować. Możesz ręcznie włączyć dostęp w Settings > Privacy, ale to zresetowanie jest jedynym sposobem, aby zachęcić do ponownego wyświetlenia (jeśli jest to ważne dla twojego testu).

Dwie dodatkowe rzeczy, które odkryłem. W bloku ukończenia [ACAccountStore requestAccessToAccountsWithType:options:completion:], jeżeli granted == NO:

  1. Jeśli [error code] == 6, twój użytkownik nie ma konta zdefiniowane.
  2. Jeśli użytkownik odmówił dostępu do aplikacji, teraz lub wcześniej. Jeśli zdarzyło się to wcześniej, żądanie jest ignorowane bez wyświetlania żadnego alertu na ekranie, bez przycisku "Nie pozwól".
+0

Dziękuję bardzo za odpowiedź. Niedawno odkryłem, że TWTweetComposeViewController jest przestarzałe od iOS 6, a zamiast tego Apple chce, abyśmy użyli SLComposeViewController. Będę testował, czy jest to ten sam przypadek z SLComposeVC i publikuję wyniki. –

+0

Testowałem z iOS6 w symulatorze i nigdy nie widziałem komunikatu "[Nazwa aplikacji] Chciałbym dostępu do kont na Twitterze" - po prostu wysyła bez pytania o pozwolenie. Bardzo dziwne. Jeszcze nie próbowałem na urządzeniu. –

+0

Polecam wypróbowanie tego na urządzeniu! – Ahsan

Powiązane problemy