如果用户喜欢这个页面,我有什么方法可以从新的FBLikeControl获得某种反馈?或者至少知道,他从Facebook应用程序返回应用程序?
答案 0 :(得分:6)
<强>更新强>
由于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!
}
}
答案 1 :(得分:3)
因为FBLikeActionController.h是一个私有头,你可以通过监听通知字符串来解决这个问题:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(facebookLikeNotification:) name:@"FBLikeActionControllerDidUpdateNotification" object:nil];
使用选择器处理通知。我添加了lldb pragma来抑制未定义的选择器警告:
- (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
}
答案 2 :(得分:1)
如果您想知道用户是否更改了按钮的状态(即,如果它不喜欢并且您喜欢它),就像我的情况一样,您可以添加[likeButton addTarget:self action:@selector(yourCallbackFunction:) forControlEvents:UIControlEventValueChanged];
和yourCallbackFuntion:
将当类似按钮的状态改变时调用。
我希望它有所帮助
答案 3 :(得分:1)
面向此问题的人的小礼物:
#import <FBSDKCoreKit/FBSDKMacros.h>
FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidUpdateNotification;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onLikeActionControllerDidUpdateNotification) name:FBSDKLikeActionControllerDidUpdateNotification object:nil];
每当用户在LIKE
按钮中进行更改时,就会触发通知。(或者不同)。