Volevo condividere un feed Twitter sul muro di Twitter che contiene un'immagine e del testo. Voglio supporto da iOS 4.3 a iOS 6.0.1. La condivisione è possibile in background senza un pulsante Invia/Condividi? Come lo realizzo?È possibile la condivisione automatica per Twitter in background su iOS?
risposta
La chiamata API che è necessario inviare è:
https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media
Prima di fare quella chiamata, naturalmente, è necessario per l'autenticazione con Twitter via XAuth/OAuth. A meno che non si ottiene il permesso speciale da Twitter per fare altrimenti, sembra che sarà necessario utilizzare OAuth,
https://dev.twitter.com/docs/oauth/xauth
Per sfondo la richiesta, è probabile che il significato usare Grand Central Dispatch --that è a meno hai molte richieste di Twitter da inviare. In tal caso, preferirei optare per lo NSOperationQueue
dove maxConcurrentOperationCount = 1
. Si veda il seguente:
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
Tuttavia, a causa OAuth è un dolore, è probabile che senso utilizzare una libreria di terze parti. Non ho mai usato prima, ma qui è un esempio usando MGTwitterEngine:
Twitter's statuses/update_with_media on iOS returns 500 error
Se tu fossi in grado di limitare l'uso di iOS 5+, quindi consiglio vivamente utilizzando l'oggetto SLRequest
. Il vantaggio di questo approccio è l'integrazione diretta con l'account degli utenti iOS, in modo che non debbano autenticarsi tramite UIWebView o qualcosa di approssimativo.
Per fare ciò, basta inserire l'URL dell'API di Twitter appropriato nella seguente funzione requestForServiceType:requestMethod:URL:parameters:
e ottenere l'oggetto SLRequest
. Quindi assegnare il Twitter appropriato ACAccount
ottenuto da ACAccountStore
utilizzando requestAccessToAccountsWithType:options:completion:
. Infine, effettua la chiamata allo performRequestWithHandler
, che quindi eseguirà la richiesta in modo asincrono.
Sì, ma è necessario trovare alcune 1.1 API wrapper (cosa che genera richieste API, singinle ecc.) Per te e autore (motore MGTWitter funziona correttamente). Ho un working solution for sharing (text only) and getting user info for iOS 4+.
E sulla parte relativa allo sfondo, che dipende da come viene implementata (ad esempio notifiche o esecuzione continua in background o callbacs ecc. Ecc.).
Il seguente codice non verrà pubblicato in background ma può essere pubblicato in tutte le versioni di ios ... È possibile utilizzare la condizione per le versioni ios come il codice riportato di seguito. Si tratta di codice funzionante che ho implementato e che funziona su entrambi ios 5 e 6. Si prega di controllare in ios 4 per confermare. Penso che dovrebbe funzionare.
#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;
}
è necessario includere tre quadri denominati sociali, adSupport e Accounts.Check quale non necessari con il post feed Twitter. Spero, questo ti aiuterà.
- 1. Condivisione con Facebook, Twitter su iOS
- 2. È possibile inviare una risposta automatica su Twitter senza tracciamento GPS?
- 3. caratteri arabi in URL, mentre la condivisione su Twitter
- 4. Non è possibile condividere URL su Facebook e Twitter utilizzando UIActivityViewController in iOS 7.1
- 5. Condivisione su Google+ utilizzando Google Sign-in per iOS
- 6. È possibile utilizzare l'autenticazione Touch-ID e la condivisione del portachiavi in un'app iOS?
- 7. È mai possibile rilevare la condivisione in Haskell?
- 8. Esercitazione per condivisione SLComposeViewController
- 9. Condivisione della correzione automatica tra i test
- 10. Come replicare background-attachment fisso su iOS
- 11. PhoneGap - Condivisione della funzionalità per e-mail, Twitter e Facebook
- 12. È possibile ignorare la finestra di dialogo del tweet e postare direttamente su Twitter?
- 13. Richiesta HTTP iOS in background
- 14. È possibile AVRCP su BLE con iOS?
- 15. iOS: Ricevi supporto in background
- 16. Implementa la correzione automatica nell'estensione della tastiera per iOS 8
- 17. È possibile disabilitare la formattazione automatica solo per pagine HTML (non C#) su VS2010?
- 18. Recupero in background iOS per notifiche locali
- 19. iOS Google Plus integrazione e la condivisione
- 20. È possibile distribuire FlashDevelop su iOS?
- 21. SDK per condivisione dello schermo per iOS
- 22. background-size: la copertura non funziona su iOS
- 23. applicazione non è in esecuzione in background in iOS 7
- 24. iOS 8.1 Swift UIActivityViewController non mostra la condivisione sui social media (Facebook, Twitter, WhatsApp, ecc.)
- 25. twitter bootstrap - well background color
- 26. Disegno in un thread in background su iOS
- 27. Condivisione di video su Facebook su iOS 8
- 28. Aggiornamento iOS su twitter api 1.1
- 29. Immagine di condivisione iOS sui social network
- 30. È possibile ripristinare automaticamente gli acquisti in app su iOS?