Facebook ios SDK - Как обработать обратный вызов диалога? - PullRequest
1 голос
/ 30 января 2012

Я использую следующий код, найденный на сайте разработчика Facebook, чтобы сделать запись на стене:

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                             @"http://developers.facebook.com/docs/reference/dialogs/", @"link",
                             @"http://fbrell.com/f8.jpg", @"picture",
                             @"Facebook Dialogs", @"name",
                             @"Reference Documentation", @"caption",
                             @"Dialogs provide a simple, consistent interface for apps to interact with users.", @"description", nil];

[_facebook dialog:@"feed" andParams:params andDelegate:self];

Показывает всплывающее окно, позволяющее пользователю написать свое сообщение и нажать опубликовать или отменить.

Есть ли способ узнать, была ли публикация успешно опубликована или нет (проблема отмены или подключения)?

Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 31 января 2012

Попробуйте использовать указание делегата, отличного от себя, чтобы иметь возможность перехватить ответ диалога.

См .: http://developers.facebook.com/docs/reference/iossdk/dialog/

Вы должны вызвать этот диалог, если методВы звоните требует параметры для настройки диалога.Вы должны настроить свой делегат для обработки сценариев, в которых диалог завершается успешно, отменяется пользователем, а также любых сценариев ошибок.

Что касается делегата: http://developers.facebook.com/docs/reference/iossdk/FBRequestDelegate/ Я быпредположим, что это будет делегат request:didReceiveResponse:.

РЕДАКТИРОВАТЬ

с дополнительным отзывом, ваш ответ лежит на делегате dialogDidComplete, указанном по ссылке, которую я дал в моеморигинальный ответ.

2 голосов
/ 01 февраля 2012

Я думаю, что вы можете сделать это, используя - (void)dialogDidComplete:(FBDialog *)dialog; метод FBDialogDelegate.

0 голосов
/ 09 мая 2012

Отчасти связано с вашим вопросом - я пытался выяснить, какой диалог завершен.

Вы можете определить параметры диалога и проверить, какой из них.У меня есть эта проблема, так как я отправляю различные диалоги и хочу узнать на другом конце, какой из них был успешным или нет.

- (void)dialogDidComplete:(FBDialog *)dialog {
    // the song feed return
    NSLog(@"params; %@",dialog.params);
    if([[dialog.params objectFOrKey:@"ref"] isEqualtoString:@"songfeed"]){
        // do stuff on return from this dialog
    }
}
0 голосов
/ 01 февраля 2012

+ 1 для Hlung и DMCS за их помощь, но похоже, что диалог подачи становится все более и более устаревшим, а обработка правильных обратных вызовов - сложная задача (невозможно?).Кроме того, документация FB не актуальна.

Так что в итоге я использовал (void)requestWithGraphPath вместо (void)dialog, который требует дополнительного разрешения для публикации на стене пользователя, но лучше работает с 2 следующимиобратные вызовы:

- (void)request:(FBRequest *)request didLoad:(id)result
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...