Hy,我试图从Facebook IOS SDK(Octomber 2011)制作一个我自己的类,在那里我可以制作我需要的所有方法和功能,只需在我的任何应用程序视图控制器中导入这个类并调用它 . 所以这种方式我不需要对使用facebook的控制器进行所有初始化和委托 . 所以我想这样做,[myfacebookclass initwithappID:myappid] [myfacebookclass postmessage:@“some message”];
问题是当我正在设置authorizeWithFBAppAuth:YES safariAuth:facebook.m(原始类)中的YES标志,我做了一个postmessage它重定向我在Facebook应用程序或Safari上检查permision,我点击确定然后重定向我在我的应用程序,不发布消息 .
当我想发布消息时,我喜欢这样:
这是我自己的facebook课程
myfacebookclass *facebook2;
+(void)initWithAppID:(NSString*) facebookAppId {
if (facebook2 == nil) {
facebook2 = [myfacebookclass new];
[facebook2 setWithAppId:facebookAppId];
}
}
- (void) postMessage1:(NSString *)messageToPost {
if ([self.facebook isSessionValid]) {
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
self.applicationID, @"api_key",
messageToPost, @"message",
nil];
[self.facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];
} else {
NSArray * neededPermissions = [[[NSArray alloc] initWithObjects:@"user_about_me", @"publish_stream", nil] autorelease];
[self.facebook authorize:neededPermissions];
}
}
+ (void)postMessage:(NSString*) message {
[facebook2 postMessage1:message];
}
我还实施了:
(BOOL)应用程序:(UIApplication *)应用程序openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [facebook handleOpenURL:url]; }
我没有在Facebook IOS SDK中修改facebook.m或其他类 .
1 回答
制作单例类时的一个好习惯是使用共享实例 . 正确的单例还必须包含一些内存管理覆盖方法 . 在你的情况下,它可以这样做:
在你的情况下,你可能有Facebook类型对象作为ivar,以及一些包装FB API的方法,例如:
从其他必须处理Facebook的课程来看,构建很简单:
我希望这些片段会对你有所帮助 .
要管理你的facebook会话,你必须在FBSessionDelegate方法中手动记住accessToken,如下所示: