(如果你給我更多的反饋意見後,我將編輯我的答案。)
我沒有用了很多Facebook的SDK,但我記得有這個問題時,我試過了。
的- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
實施應該在你的應用程序代理
如果您需要訪問自己的Facebook的實例就是一個的viewController(比方說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];
}
如果實現文件你仍然有問題讓我知道!
的Ciao!你在哪裏實現 - (BOOL)應用程序:(UIApplication *)應用程序openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; ? – Moxy
在視圖控制器中,因爲它需要訪問Facebook實例中的執行 – Giacomo
看看我的答案,讓我知道如果你發現有什麼東西丟失 – Moxy