Roe*_*man 11 facebook objective-c ios
我想知道使用Facebook iOS SDK的"最佳实践"指南是什么.
具体来说 - 我有几种使用Facebook SDK的表单.我作为OOP程序员的初衷是在我的数据访问层下创建一个"FacebookManager"类来处理所有Facebook活动.不幸的是,因为Facebook iOS SDK使用委托和异步方法,所以这不是那么有用,因为使用FacebookManager的任何其他模块都必须传递所有响应的委托.
然后我想到每个ViewController本身都是FBRequestDelegate并处理所有Facebook响应.
那么,你如何在你的应用程序中做到这一点?
我所做的就是按照你的建议创建一个FacebookManager.该经理成为FBRequestDelegate.现在我更喜欢块到委托模型,所以我所有的FacebookManager方法都是基于块的.
这是我对用户的墙方法的帖子的样子
- (void)postToUserWall:(NSDictionary*)postDictionary withCompleteHandler:(void(^)(id result, NSError* error))block {
if( [facebook_ isSessionValid] ) {
NSMutableDictionary* params = [postDictionary mutableCopy];
[params setObject:facebook_.accessToken forKey:@"access_token"];
FBRequest* request = [facebook_ requestWithGraphPath:@"me/feed" andParams:[postDictionary mutableCopy] andHttpMethod:@"POST" andDelegate:self];
[[request params] setObject:block forKey:@"result"];
}
}
Run Code Online (Sandbox Code Playgroud)
然后在成功或错误时我只执行块
- (void)processRequest:(FBRequest*)request withResult:(id)result andError:(NSError*)error {
NSDictionary* params = [request params];
if( [request params] != nil && [params objectForKey:@"result"] != nil ) {
void(^completeBlock)(id result,NSError* error) = [params objectForKey:@"result"];
completeBlock(result, nil);
}
}
- (void)request:(FBRequest *)request didLoad:(id)result {
[self processRequest:request withResult:result andError:nil];
}
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
[self processRequest:request withResult:nil andError:error];
}
Run Code Online (Sandbox Code Playgroud)
我希望有一个更好的方法来处理阻止,但这是迄今为止我发现的最好的方法.这是最好的方法吗?可能不是,但这是我目前使用的,似乎没问题,保持所有FB交互远离我的视图控制器.
请注意,此处的所有代码都假设ARC,这就是没有版本的原因
| 归档时间: |
|
| 查看次数: |
1597 次 |
| 最近记录: |