Проверка успешности публикации в фиде Facebook - PullRequest
2 голосов
/ 01 июня 2011

В моем приложении пользователь может публиковать сообщения в своем фиде на Facebook, и мне нужно знать, была ли публикация успешной или нет. На странице разработчиков Facebook я обнаружил, что если сообщение успешно, приложение получает post_id. Так что я могу проверить это post_id; если это не nil, это означает, что пользователь опубликовал в своем фиде, но как я могу получить post_id?

Ответы [ 2 ]

6 голосов
/ 20 января 2012

Я использовал что-то немного проще:

if ([url query] != nil) { // eg. post_id=xxxxxxx
    // success
}
4 голосов
/ 11 июля 2011

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

Эти методы, описанные ниже, являются частью протокола FBDialogDelegate.

Диалогвызывает dialogCompleteWithUrl: метод, а затем вызывает dialogDidComplete: метод

SKIP - Когда пользователь нажимает кнопку Пропустить, URL-адрес, который передается в dialogCompleteWithUrl: метод, равен

fbconnect://success

PUBLISH - Когда пользователь нажимает «Опубликовать», URL-адрес, который передается в dialogCompleteWithUrl: метод, равен

fbconnect://success/?post_id=123456789_12345678912345678

, где "123456789_12345678912345678" - это идентификатор записи, уникальный для записи пользователя (то есть этот post_id является лишь примером).Чтобы лучше объяснить post_id, параметр post_id состоит из userIdentifier и postIdentifier.

post_id=<userIdentifier>_<postIdentifier>

CANCEL - Когда пользователь нажимает наОтмена диалогового окна вызывает dialogCancelWithUrl: метод, затем dialogCancel: метод.Я ничего не делаю с этим вызовом в приведенном ниже примере.

* Поскольку я не использую post_id ни для чего, кроме как для определения, присутствует ли кто-то для подтверждения успеха сообщения, ниже приведен пример того, какдифференцировать два результата.Это всего лишь пример, чтобы помочь вам увидеть результаты, как описано выше.Не стесняйтесь добавлять свою передачу *

#pragma mark -
#pragma mark - FBDialogDelegate -
/* ====================================================================*/

/*** Called when the dialog succeeds with a returning url.*/
- (void)dialogCompleteWithUrl:(NSURL *)url {
    NSLog(@"Post Complete w/ URL");     

    NSLog(@"%@",[url absoluteString]);
    NSString *theURLString = [url absoluteString];

    NSString *successString = @"fbconnect://success?post_id=";
    NSString *skipString = @"fbconnect://success";

    NSString *subStringURL = nil;
    if ([theURLString length] > [successString length]) {
        subStringURL = [[url absoluteString] substringToIndex:28];
        NSLog(@"%@",subStringURL);        
    }

    if ([subStringURL isEqualToString:successString] ) 
    {
        UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Wall Post Successful" message:@"" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [successAlert show];
        [successAlert release];
    } 

    if ([theURLString isEqualToString:skipString]) {

        UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Wall Post Skipped" message:@"" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [successAlert show];
        [successAlert release];         
    }

}

/*** Called when the dialog succeeds and is about to be dismissed.*/
- (void)dialogDidComplete:(FBDialog *)dialog {
    NSLog(@"Post Complete");
}

/*** Called when the dialog is cancelled and is about to be dismissed. */
- (void)dialogDidNotComplete:(FBDialog *)dialog {    
    NSLog(@"Post Cancelled");
}

/*** Called when the dialog get canceled by the user.*/
- (void)dialogDidNotCompleteWithUrl:(NSURL *)url {
    NSLog(@"Post Cancelled w/ URL");    
    NSLog(@"%@",[url absoluteString]);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...