Это очень старый пост, и я не уверен, что кто-то его ищет, но мне удалось сделать именно это сегодня, после некоторого удара. Вот что вам нужно сделать:
- Объявите, что ваш класс реализует MGTwitterEngineDelegate
Реализуйте хотя бы следующий метод получения статуса
(void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier
Массив statuses имеет NSDictionary на первой позиции. Извлеките его следующим образом
NSDictionary *status = (NSDictionary *)[statuses objectAtIndex:0];
Извлечение двух ключей из словаря "source_api_request_type" и "id". Сохраните их оба как значения NSString.
Обновите MGTwitterEngine.h и MGTwitterEngine.m, чтобы изменить сигнатуру метода метода markUpdate для отправки updateID в виде строки NSString вместо unsigned int. После изменения оно будет выглядеть примерно так:
(NSString *)markUpdate:(NSString *)updateID asFavorite:(BOOL)flag; // favorites/create, favorites/destroy
Измените метод %u
в markUpdate на %@
, чтобы изменение входного параметра применялось правильно. (Вы должны внести изменения в двух местах метода)
Вернувшись в свой код, вы будете использовать что-то похожее на следующее, чтобы отправить твит.
[twitterEngine sendUpdate: @"My Tweet Text"];
Это вызовет событие statusRectained после успешной публикации твита. Как уже упоминалось ранее, в событии statusRectained нам нужны два значения: tweetId и тип запроса.
Используйте следующий код, чтобы проверить, является ли запрос Type == 5 и вызывать ли метод markUpdate путем передачи значений идентификатора твита и логического значения YES в избранное (или в NO, если нет) чирикать. Ваш код будет выглядеть так:
(void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier
{
if([statuses count] > 0)
{
NSDictionary *status = (NSDictionary *)[statuses objectAtIndex:0];
NSString *stringId = (NSString *)[status objectForKey:@"id"];
NSNumber *requestType = (NSNumber *)[status objectForKey:@"source_api_request_type"];
NSLog(@"Tweet ID String - %@ and Request Type: %@.", stringId, requestType);
if ([requestType isEqualToNumber: [NSNumber numberWithInt: 5]])
{
[twitterEngine markUpdate: stringId asFavorite:YES];
}
}
}
Тайный соус «типа запроса» 5 состоит в том, что новая публикация твита имеет «идентификатор запроса API» 5, и мы хотим отметить новые твиты только как избранные. (Когда вы смотрите идентификатор после того, как твит отмечен как избранный, это будет статус 26).
С выходом iOS 5 MGTwitterEngine скоро будет устаревшим. Но мне было интересно понять это в моем собственном проекте. Надеюсь, кто-то найдет это полезным.