FBLikeControlcallback

如果用户喜欢这个页面,有什么方法可以从新的FBLikeControl中得到某种反馈? 或者至less不知何故,他从Facebook应用程序返回到应用程序?

更新:

由于Facebook显然使这个头部是私人的,你现在必须使用一个原始string直接订阅通知:

[[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! } } 

由于FBLikeActionController.h是一个私有头,你可以通过监听通知string来解决这个问题:

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

并使用select器处理通知。 我添加了lldb pragmas来压制未定义的select器警告:

  - (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 } 

如果你想知道用户是否改变了button的状态(即如果它是不喜欢的,你喜欢它),就像我的情况,你可以添加[likeButton addTarget:self action:@selector(yourCallbackFunction:) forControlEvents:UIControlEventValueChanged];yourCallbackFuntion:将在类似button的状态改变时被调用。

我希望它有帮助

面对这个问题的人的小礼物:

  1. 导入#import <FBSDKCoreKit/FBSDKMacros.h>
  2. 定义一个nofitication键FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidUpdateNotification;
  3. 注册一个通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onLikeActionControllerDidUpdateNotification) name:FBSDKLikeActionControllerDidUpdateNotification object:nil];

每当用户在“ LIKEbutton中进行更改(如或不同)时,都会触发通知。