TWRequest устарела в iOS 6.0 - что я могу использовать вместо этого?
Я разрабатываю вид Twitter-канала для приложения для iOS. Я нашел TWRequest, и он работает точно так же, как я искал. Но: я получаю Уведомление: "TWRequest устарел: сначала устарел в iOS 6.0". Что я должен использовать вместо этого?
4 ответа
На iOS 6 вы должны использовать Social.framework
, Это имеет класс с именем SLRequest
,
Вы используете его почти так же, как устаревший TWRequest
, но вы должны указать, что это запрос в твиттере, а не в facebook-запросе.
Целиком Twitter.framework
с iOS 6 устарела, так как Apple добавила Facebook и Weibo (китайскую социальную сеть) в iOS 6, они сгруппировали все социальные классы в новый Social.framework
,
Обратите внимание, что вы должны указать тип сервиса для Twitter/Facebook, пример:
SLRequest *aRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:myurl
parameters:myparams];
Обязательно ознакомьтесь с документацией.
Вот полный код для загрузки текста + изображения в вашу учетную запись Twitter с помощью Twitter API
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 !");
}
}];
}
}
}];
Если вы планируете интегрировать TwitterKit от Twitter для выполнения твитов через ваше собственное приложение для Twitter, это может вам помочь.
Другой альтернативой является использование Twitter API. Вы должны иметь Twitter фреймворк для этого.
Затем выполните следующий код:
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);
}