2014-10-07 2 views
4

Есть ли способ получить какую-то обратную связь от нового FBLikeControl, если пользователю понравилась страница? Или, по крайней мере, как-то знать, что он вернулся в приложение из приложения Facebook?FBLikeControl callback

+0

Не уверен, если я полностью понимаю вопрос. Если/когда пользователь вернется в ваше приложение (из приложения FB), будет вызвано приложение AppDelegate: openURL: sourceApplication: annotation: method. Поскольку нет другого способа открыть приложение (или вернуться) на iOS, так вы узнаете, что пользователь вернулся. –

+0

, так что нет возможности зарегистрировать себя в качестве делегата из аналогичного элемента управления напрямую или предоставить управление блоком обратного вызова, чтобы уведомить меня? –

ответ

6

Update:

Так Facebook, по-видимому сделал этот заголовок частным, теперь вы должны подписаться непосредственно на уведомление, используя необработанную строку:

[[NSNotificationCenter defaultCenter] addObserver:myObject selector:@selector(myCallback:) name:@"FBLikeActionControllerDidUpdateNotification"]; 

Старый ответ для справки:

Для тех, кто в будущем ищет это: я закончил подписку на уведомления FBLikeActionControllerDidUpdateNotification. После получения уведомления вы можете сделать следующее:

if ([notification.object isKindOfClass:[FBLikeActionController class]]) { 
    if ([(FBLikeActionController*)notification.object objectIsLiked]) { 
     // do your stuff here, user liked! 
    } 
} 
+0

Извините, не могли бы вы показать мне какой-то ресурс о том, как подписаться на 'FBLikeActionControllerDidUpdateNotification', как в вашем ответе, потому что я не могу найти ничего, кроме некоторой ссылки github –

+0

просто сделать [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (notificationReceived :) name: FBLikeActionControllerDidUpdateNotification object: nil]; Также убедитесь, что импортировали #import и у вас установлена ​​последняя версия SDK, так как класс FBLikeControl на самом деле совершенно новый. –

+0

Большое спасибо, вы спасли мои дни :) –

1

Если вы хотите узнать, изменил ли пользователь состояние кнопки (то есть, если оно было неактивным и вам понравилось), как это было в моем случае, вы можете добавить [likeButton addTarget:self action:@selector(yourCallbackFunction:) forControlEvents:UIControlEventValueChanged];, а yourCallbackFuntion: будет вызываться, когда состояние как кнопка меняется.

Я надеюсь, что это помогает

+0

Это хорошая идея, но есть, если я ничего не пропущу, в FBLikeControl (подкласс UIControl) нет ничего, чтобы указать, понравилось ли это или нет. –

+0

Да, вы правы. Я не могу проверить, понравилось это или нет, но в моем случае мне нужно было только знать, изменил ли пользователь состояние. Ответ Тима правильный для его случая. –

+0

UIControlEventTouchUpInside работает лучше, чем UIControlEventValueChanged! – thatzprem

3

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(facebookLikeNotification:) name:@"FBLikeActionControllerDidUpdateNotification" object:nil]; 

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

- (void)facebookLikeNotification:(NSNotification*)notification { 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wundeclared-selector" 
    SEL selector = @selector(objectIsLiked); 
    if (notification.object && [notification.object respondsToSelector:selector]) { 

     BOOL (*BOOLMsgSend)(id, SEL) = (typeof(BOOLMsgSend)) objc_msgSend; 
     BOOL isLiked = BOOLMsgSend(notification.object, selector); 
     DDLogDebug(@"is liked: %d",isLiked); 

    } 
#pragma clang diagnostic pop 
} 
+1

FBLikeActionControllerDidUpdateNotification кажется закрытым. Witch версия sdk вы использовали? – Arvind

1

Небольшого подарок для тех, кто сталкивается этим вопрос:

  1. Импорт #import <FBSDKCoreKit/FBSDKMacros.h>
  2. Определяет Сообщение об этом ключе FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidUpdateNotification;
  3. Регистрации уведомления [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onLikeActionControllerDidUpdateNotification) name:FBSDKLikeActionControllerDidUpdateNotification object:nil];

И примечание будет срабатывать всякий раз, когда пользователь вносит изменения в кнопку LIKE (например, или в отличие от нее).

+0

Сочетание метода Кевина и уведомления Никеля Артетой работало для меня \ м / – GouthamDevaraju

Смежные вопросы