Facebook iOS SDK - 自定义委托

Posted

技术标签:

【中文标题】Facebook iOS SDK - 自定义委托【英文标题】:Facebook iOS SDK - Custom Delegate 【发布时间】:2011-06-14 11:13:19 【问题描述】:

我正在开发一个与 facebook 集成的新项目。该应用程序必须向 facebook 发出不同的请求。 SDK 提供了一个委托来处理每个请求。现在我需要一个自定义委托来处理某些不同的请求。有人可以给我一个关于如何完成这个的提示吗?

【问题讨论】:

【参考方案1】:

Facebook 类公开了许多返回 FBRequest* 对象的方法,每个方法都有一个委托参数,委托可以是您喜欢的任何对象,只要它符合 FBRequestDelegate 协议即可。

因此,只要有一个自定义类来为每种类型的请求实现协议即可。或者,有一个实现协议的类,在这些方法中,您需要检查收到的 FBRequest 以确定要做什么。因此,例如,如果您正在调用:

Facebook *fb = [[Facebook alloc] initWithAppId:kYourFacebookAppId];
[params setObject:[NSNumber numberWithBool:YES] forKey:@"PostComment"];
[fb requestWithParams:params andDelegate:delegate];
[fb release];

然后在委托中,您可以执行以下操作:

- (void)request:(FBRequest *)request didLoad:(id)result 
    // Make a decision based on the request
    if ([[request.params objectForKey:@"PostComment"] boolValue]) 
        // Here we should post a comment.

    

但是,我个人不会这样做,因为它会更难维护。更好的是为每个 Facebook 相关任务编写单独的类。这些类可以继承自 FBDelegate 基类,该类执行常见的操作,例如错误处理。

【讨论】:

感谢您的帮助!我会试试你推荐的。但要明确一点:不能直接从[facebook requestWithGraphpath:@"me/albums" andDelegate:self]; 调用某个方法?抱歉,我是 Objective C 和 Facebook SDK 的新手 好的,所以,这是异步网络编程,(最初并不容易理解)。所以,发生的事情是,您调用 requestWithGraphPath... 并将其传递给您的委托。一旦你调用了它,程序就会继续,在某个时候facebook对象会得到一个答案,你的委托方法将被调用并得到结果。阅读developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… 另外,通常情况下,您将从视图控制器中调用此 facebook 请求,因此通常,您会将委托方法添加到该视图控制器的实现中,然后将 添加为其协议。 所以正确的方法是像他那样做? tylerwhitedesign.com/… 是的,这看起来很彻底,也许有点冗长。我自己对 Facebook 的使用仅用于身份验证,根据您需要做什么,您可以将委托方法捆绑到您的视图控制器中。不过,在那个网站上还是不错的。

以上是关于Facebook iOS SDK - 自定义委托的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK iOS 的自定义分享、登录按钮

Facebook iOS SDK - 发布自定义故事

对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/密钥的最佳方式是啥?

自定义like按钮IOS SDK

使用 sdk 4 的 Facebook 自定义登录 UI

通过facebook sdk分享自定义TEXT状态