(如果您在此之后给我更多反馈,我将编辑我的答案。)
我没有大量使用 Facebook SDK,但我记得我尝试过时遇到了这个问题。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
实现应该在您的应用委托中
如果您只需要在一个 viewController 中访问您的 Facebook 实例(比如说 MyFacebooViewController)
你可以有这样的东西
#import <UIKit/UIKit.h>
#import "FBConnect.h"
@interface MyFacebookViewController : UIViewController <FBSessonDelegate, FBRequestDelegate>
@property (nonatomic, strong) Facebook *facebook;
...
@end
你的 .m 文件应该包含这个
#import "MyFacebookViewController.h"
#import "MyAppDelegate.h"
@implementation MyFacebookViewController
@synthesize facebook = _facebook;
-(Facebook *)facebook
{
if(!_facebook){
_facebook = [[Facebook alloc] initWithAppId:MY_APP_ID andDelegate:self];
}
return _facebook;
}
-(void)viewDidLoad
{
[super viewDidLoad];
((MyAppDelegate *)([[UIApplication sharedApplication] delegate])).facebookViewController = self;
...
}
当然你需要实现你的 FBSessionDelegate 和 FBRequestDelegate 方法
在 AppDelegate 中:
#import <UIKit/UIKit.h>
#import "MyFacebookViewController.h"
@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
...
@property (strong, nonatomic) MyFacebookConnectViewController *facebookViewController;
@end
您需要在实现文件中放置- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
@implementation MyAppDelegate
@synthesize facebookViewController = _facebookViewController;
...
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [self.facebookViewController.facebook handleOpenURL:url];
}
如果您仍然有问题,请告诉我!