繁体   English   中英

FBLikeControl回调

[英]FBLikeControl callback

有什么方法我可以从新的FBLikeControl获得某种反馈,如果用户喜欢该页面? 或者至少知道某种程度,他从Facebook应用程序返回应用程序?

更新:

由于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!
    }
}

因为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
}

如果你想知道用户是否改变了按钮的状态(例如,如果它不喜欢并且你喜欢它),就像我的情况一样,你可以添加[likeButton addTarget:self action:@selector(yourCallbackFunction:) forControlEvents:UIControlEventValueChanged]; yourCallbackFuntion:当like按钮的状态发生变化时将被调用。

我希望它有所帮助

面向此问题的人的小礼物:

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

每当用户在LIKE按钮上进行更改时(或类似或不同),都会触发通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM