Chciałbym udostępnić kanał na Twitterze na ścianie Twittera, który zawiera obraz i tekst. Chcę uzyskać wsparcie z iOS 4.3 na iOS 6.0.1. Czy udostępnianie jest możliwe w tle bez przycisku wysyłania/udostępniania? Jak mogę to wdrożyć?Czy automatyczne udostępnianie jest dostępne dla Twittera w tle w systemie iOS?
Odpowiedz
Wywołanie API, które trzeba wysłać to:
https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media
Przed przystąpieniem do tej rozmowy, oczywiście, trzeba będzie uwierzytelnić z Twittera za pośrednictwem XAUTH/OAuth. Chyba że można dostać specjalne pozwolenie z Twittera, aby postąpić inaczej, wygląda na to trzeba będzie użyć OAuth,
https://dev.twitter.com/docs/oauth/xauth
Aby tle wniosek, to będzie prawdopodobnie sensu używać Grand Central Dispatch --that jest chyba masz wiele różnych żądań Twittera do wysłania. W takim przypadku zamiast tego zdecydowałbym się na NSOperationQueue
gdzie maxConcurrentOperationCount = 1
. Zobacz:
http://www.fieryrobot.com/blog/2010/06/27/a-simple-job-queue-with-grand-central-dispatch/
http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues
Niemniej jednak, ponieważ OAuth jest taki ból, to będzie prawdopodobnie sensu korzystać z biblioteki przez stronę trzecią. Nigdy nie używał go wcześniej, ale tutaj jest przykład przy użyciu MGTwitterEngine:
Twitter's statuses/update_with_media on iOS returns 500 error
Jeśli były w stanie ograniczyć stosowanie do iOS 5+, to chciałbym polecić korzystanie z przedmiotu SLRequest
. Zaletą tego podejścia jest to, że integrujesz się bezpośrednio z kontem użytkowników iOS, więc nie muszą uwierzytelniać się za pomocą interfejsu UIWebView lub czegoś tandetnego.
Aby to zrobić, wystarczy podłączyć odpowiedni adres URL interfejsu Twitter API w następującej funkcji requestForServiceType:requestMethod:URL:parameters:
i uzyskać obiekt SLRequest
. Następnie przypisz odpowiedni serwis Twitter ACAccount
uzyskany z ACAccountStore
przy użyciu adresu requestAccessToAccountsWithType:options:completion:
. Na koniec zadzwoń pod numer performRequestWithHandler
, który następnie wykona twoje żądanie asynchronicznie.
Tak, ale musisz znaleźć opakowanie 1.1 interfejsu API (coś, co generuje żądania interfejsu API, wyświęca je itp.) Dla ciebie i autora (silnik MGTWitter działa bez zarzutu). Mam working solution for sharing (text only) and getting user info for iOS 4+.
Co do części tła - zależy to od tego, jak ją zaimplementujesz (tj. Powiadomienia lub ciągłe wykonywanie tła lub wywołania gps etc ...).
Poniższy kod nie będzie publikowany w tle, ale może być publikowany w wersjach ios ... Możesz użyć warunku dla wersji ios, jak poniższy kod. To działa kod, który zaimplementowałem i działa zarówno na ios 5 jak i 6. Proszę sprawdzić w ios 4, aby potwierdzić. Myślę, że to powinno działać.
#import "Twitter/Twitter.h"
#import "Social/Social.h"
-(IBAction)tweetPost:(id)sender
{
if ([self isSocialAvailable])
{
SLComposeViewController *tweetComposer=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
SLComposeViewControllerCompletionHandler __block completionHandler=
^(SLComposeViewControllerResult result){
[tweetComposer dismissViewControllerAnimated:YES completion:nil];
switch(result){
case SLComposeViewControllerResultCancelled:
default:
{
NSLog(@"Cancelled.....");
}
break;
case SLComposeViewControllerResultDone:
{
NSLog(@"Posted....");
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Sent"
message:nil
delegate:nil
cancelButtonTitle:@"Dismiss"
otherButtonTitles: nil];
[alert show];
}
break;
}};
NSString*message = @"posting to twitter test ios 6";
[tweetComposer setInitialText:message];
[tweetComposer addImage:[UIImage imageNamed:@"2.jpg"]];
[tweetComposer addURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=GoZ2Be2zLq8"]];
[tweetComposer setCompletionHandler:completionHandler];
[self presentViewController:tweetComposer animated:YES completion:nil];
}
}
else
{
TWTweetComposeViewController *twitter= [[TWTweetComposeViewController alloc] init];
[twitter addImage:[UIImage imageNamed:@"2.jpg"]];
[twitter addURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=GoZ2Be2zLq8"]];
[twitter setInitialText:@"Tweet from iOS 5 app using the Twitter framework."];
[self presentModalViewController:twitter animated:YES];
twitter.completionHandler = ^(TWTweetComposeViewControllerResult result)
{
NSString *title = @"Tweet Status";
NSString *msg;
if (result == TWTweetComposeViewControllerResultCancelled)
msg = @"Tweet compostion was canceled.";
else if (result == TWTweetComposeViewControllerResultDone)
msg = @"Tweet composition completed.";
// Show alert to see how things went...
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title message:msg delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alertView show];
};
}
}
-(BOOL)isSocialAvailable {
return NSClassFromString(@"SLComposeViewController") != nil;
}
Musisz uwzględnić trzy frakcje o nazwie social, adSupport i Accounts.Sprawdź, które nie są potrzebne w poście na Twitterze. Hope, to ci pomoże.
- 1. Udostępnianie za pomocą Facebooka, Twittera na iOS
- 2. Pobieranie w tle iOS w tle dla lokalnych powiadomień
- 3. Udostępnianie kodu rabatowego na potrzeby zakupu w systemie iOS
- 4. iOS: Odbieranie mediów w tle
- 5. Udostępnianie adresów URL youtube.com/embed w iOS
- 6. Udostępnianie obrazu iOS w sieciach społecznościowych
- 7. Tryb tła w tle iOS
- 8. Czasowe przetwarzanie w tle iOS
- 9. Automatyczne wypełnianie hasła dla aplikacji iOS
- 10. Wyłącz automatyczne blokowanie ekranu w systemie iOS 5.1
- 11. Jak wyłączyć automatyczne skalowanie aplikacji w systemie iOS 8?
- 12. Ciche powiadomienie push w systemie iOS z React Native, gdy aplikacja jest w tle
- 13. Proces uruchamiania w tle w systemie Android
- 14. Pobieranie aplikacji w tle iOS
- 15. Pracownik w tle sprawdza, czy jest północ?
- 16. Udostępnianie JavaVM * dla wątków w systemie Android NDK
- 17. Dzienniki urządzeń dla bluetooth w systemie iOS
- 18. Odpowiednik rozwiązania NSNotificationCenter dla systemu iOS w systemie Android?
- 19. Jakie czcionki są dostępne w systemie Android?
- 20. Przechwytywanie strumienia audio w tle na iOS
- 21. Czy obiekt objc_setAssociatedObject jest niedostępny w systemie iOS?
- 22. ios 5.0 zaloguj się do Twittera w symulatorze ios
- 23. Rozwój dla OS X pochodzący z iOS w tle
- 24. Udostępnianie danych między aplikacjami w IOS
- 25. Dźwięk w tle dla aplikacji wideo na iOS
- 26. Kiedy jest wykonywane automatyczne przechwytywanie ekranu ios?
- 27. iOS 4: Zdalne sterowanie dźwiękiem w tle
- 28. Dlaczego zawartość paska nawigacji jest wyświetlana w systemie iOS 11, ale nie w systemie IOS 10?
- 29. IOS: Odtwarzaj dźwięk, gdy aplikacja jest w tle.
- 30. iOS - jak ukończyć długi proces w tle