Opracowuję widok kanału na Twitterze dla aplikacji na iOS. Znalazłem TWRequest i działa dokładnie tak, jak tego szukałem. Ale: otrzymuję komunikat: "TWRequest jest przestarzałe: po raz pierwszy przestarzałe w iOS 6.0". Co powinienem zamiast tego użyć?TWRequest jest przestarzałe w iOS 6.0 - co mogę zamiast tego użyć?
Odpowiedz
W systemie iOS 6 należy użyć numeru Social.framework
. Ma to klasę o nazwie SLRequest
.
Używa się go prawie tak samo jak przestarzałą wersję TWRequest
, ale należy określić, że jest to prośba twittera, a nie prośba na Facebooku.
Cała wersja Twitter.framework
stała się przestarzała od wersji iOS 6, ponieważ Apple dodała Facebooka i Weibo (chińską sieć społecznościową) do systemu iOS 6, zgrupowano wszystkie klasy społeczne w nowym Social.framework
.
Uwaga należy określić typ usługi dla Twitter/Facebook, przykład:
SLRequest *aRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:myurl
parameters:myparams];
Koniecznie sprawdzeniu documentation.
Oto kompletny kod przesłać tekst + zdjęcie na swoim koncie Twitter za pomocą API Twittera
UIImage *img = [UIImage imageNamed:@"twitterImage.png"];
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if (granted == YES) {
// Populate array with all available Twitter accounts
NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
if ([arrayOfAccounts count] > 0) {
ACAccount *acct = [arrayOfAccounts objectAtIndex:0];
NSDictionary *message = @{@"status": @"From my app"};
NSURL *requestURL = [NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"];
SLRequest *postRequest = [SLRequest
requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:requestURL parameters:message];
NSData *data = UIImagePNGRepresentation(img);
[postRequest addMultipartData:data withName:@"media" type:@"image/png" filename:@"TestImage"];
postRequest.account = acct;
[postRequest performRequestWithHandler:
^(NSData *responseData, NSHTTPURLResponse
*urlResponse, NSError *error)
{
if (error) {
NSLog(@"%@",error.description);
}
else {
NSLog(@"Upload Sucess !");
}
}];
}
}
}];
W przypadku planują integrację TwitterKit przez Twitter wykonywać tweets przez niestandardowej aplikacji twitter wówczas może ci pomóc.
Inną alternatywą jest użycie API Twittera. Powinieneś mieć na to framework Twittera.
Następnie wykonaj następujący kod:
NSString *statusesShowEndpoint = @"https://api.twitter.com/1.1/statuses/update.json";
NSDictionary *params = @{@"status": @"Hello, my first autopost tweet..."};
NSError *clientError;
NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
URLRequestWithMethod:@"POST"
URL:statusesShowEndpoint
parameters:params
error:&clientError];
if (request) {
[[[Twitter sharedInstance] APIClient]
sendTwitterRequest:request
completion:^(NSURLResponse *response,
NSData *data,
NSError *connectionError) {
if (data) {
// handle the response data e.g.
NSError *jsonError;
NSDictionary *dicResponse = [NSJSONSerialization
JSONObjectWithData:data
options:0
error:&jsonError];
NSLog(@"%@",[dicResponse description]);
}
else {
NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
}
}];
}
else {
NSLog(@"Error: %@", clientError);
}
2015: Use „https://api.twitter.com/1.1/statuses/update.json”, a także zwrócić uwagę, że całkiem możliwe błędy mogą powrócić jako JSON w the responseData. – prewett