Facebook 共有 (フィード) ダイアログを統合する必要があるアプリを作成しています。https://developers.facebook.com/docs/mobile/ios/build/ですべてのものを読み、アプリの起動が終了したときに Facebook 共有 (フィード) ダイアログを読み込むことができました。しかし、私の問題は、xcode 4.3、つまりストーリーボードを使用していて、ボタンアクションで Facebook フィードダイアログをロードしたいことです。
別のView Controllerを作成し、AppDelegateの関数のすべてのものを貼り付けました
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
その中で、-(void) viewDidload
「ログインページ」をロードしてから「Facebookアプリ」ページをロードできました。
その後、Facebook アプリへの許可を許可すると、「フィード ダイアログ」が表示されません。
ここに私のviewController.hファイルがあります
#import "FBConnect.h"
@interface ViewController : UIViewController<FBSessionDelegate,FBDialogDelegate>
{
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;
@end
-ここに私のViewController.mファイルがあります
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize facebook=_facebook;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
facebook = [[Facebook alloc] initWithAppId:@"284727404938450" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:nil];
}
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
[facebook dialog:@"feed" andDelegate:self];
}
ただし、AppDelegate ファイルで使用される 2 つのメソッドを次に示します。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [ facebook] handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [ facebook] handleOpenURL:url];
}
xib では、これらのメソッドは次のようにする必要があることを知っています。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[_ViewController facebook] handleOpenURL:url];
}
// For iOS 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[_ViewController facebook] handleOpenURL:url];
}
これらのメソッドは、現在の「facebook」インスタンス (Facebook *facebook) のフィード ダイアログをポップアップする役割を果たします。
私の問題は、ストーリーボードに「ウィンドウ」とビューコントローラーのインスタンスがないため、現在のviewControllerの「facebook」インスタンスに対してこれら2つのメソッドが呼び出されていないことです。私のviewControllerがAppDelegateファイルのインスタンスではない「facebook」インスタンスに対してこれら2つの関数を呼び出すにはどうすればよいですか?
私を助けてください。