iOS 7 – Facebook: проверить результат публикации

Вам когда-нибудь приходилось проверять, успешно ли сделана публикация на стене Facebook?

Я хотел бы знать, отменяет ли пользователь операцию общего доступа из интерфейса SDK или она не публикуется из-за технической проблемы.

Я использую FBDialogs фреймворка "FacebookSDK/FacebookSDK.h" на iOS 7.

Блок обработчиков таких методов, как presentShareDialogWithPhotoParams, никогда не вызывается.

Заранее спасибо. Чао.


person user3561665    schedule 22.04.2014    source источник


Ответы (1)


Когда вы представляете диалоговое окно канала, вы можете использовать следующий код, чтобы определить, когда пользователь успешно поделился публикацией, когда пользователь отменил действие или когда произошла ошибка:

[FBWebDialogs presentFeedDialogModallyWithSession:nil
                                       parameters:params
                                          handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
                                              if (error) {
                                                  // An error occurred, we need to handle the error
                                                  // See: https://developers.facebook.com/docs/ios/errors
                                                  NSLog(@"%@", [NSString stringWithFormat:@"Error publishing story: %@", error.description]);
                                              } else {
                                                  if (result == FBWebDialogResultDialogNotCompleted) {
                                                      // User cancelled.
                                                      NSLog(@"User cancelled.");
                                                  } else {
                                                      // Handle the publish feed callback
                                                      NSDictionary *urlParams = [self parseURLParams:[resultURL query]];

                                                      if (![urlParams valueForKey:@"post_id"]) {
                                                          // User cancelled.
                                                          NSLog(@"User cancelled.");

                                                      } else {
                                                          // User clicked the Share button
                                                          NSString *result = [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
                                                          NSLog(@"result %@", result);
                                                      }
                                                  }
                                              }
                                          }];

и когда вы представляете диалоговое окно общего доступа, вы можете разрешить следующую ошибку, которая исходит от сервера, для обработки, когда сообщение было успешно опубликовано или нет:

[FBDialogs presentShareDialogWithLink:params.link
                                     name:params.name
                                  caption:params.caption
                              description:params.description
                                  picture:params.picture
                              clientState:nil
                                  handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                      if(error) {
                                          // An error occurred, we need to handle the error
                                          // See: https://developers.facebook.com/docs/ios/errors
                                          NSLog(@"%@", [NSString stringWithFormat:@"Error publishing story: %@", error.description]);
                                      } else {
                                          // Success
                                          NSLog(@"result %@", results);
                                      }
                                  }];
person Aleksander Prenga    schedule 25.04.2014