FBConnect的handleOpenURL方法不是由我的AppDelegate调用的

时间:2011-06-02 15:40:57

标签: iphone xcode facebook facebook-c#-sdk fbconnect

我已将FBConnect SDK应用到我的应用程序中,并且它在模拟器上运行良好。然后我适当地修改了我的应用程序的.plist文件,并在我的AppDelegate上添加了必要的方法,以便在设备上安装Facebook时:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSLog(@"handleOpenURL Method was called and sent the following:");
NSString *urlString = [NSString stringWithContentsOfURL:(NSURL *)url];     
NSLog(@"URL String: %@", urlString);
return [[flipsideViewController facebook] handleOpenURL:url];
}

从上面的NSLogs以及在通过Facebook授权访问后我的应用程序返回到前台的观察结果,我推断FB应用程序正在将控制权交给我的应用程序。不幸的是,Facebook.m的“handleOpenURL:url”方法实际上并没有像我在AppDelegate中请求的那样被调用(即,没有显示下面的NSLog)。

- (BOOL)handleOpenURL:(NSURL *)url {
// If the URL's structure doesn't match the structure used for Facebook authorization, abort.
NSLog(@"handleOpenURL was handled by SDK. Good!");
if (![[url absoluteString] hasPrefix:[self getOwnBaseUrl]]) {
NSLog(@"handleOpenURL structure doesn't match the structure used for Facebook authorization. Aborting.");
return NO;
}
//...

结果,我的应用程序的视图控制器(我点击我的Facebook按钮开始)只是返回到屏幕,我放在'fbDidLogin'方法中的代码(在我的视图控制器中用于发布到用户的墙)永远不会像在模拟器中那样被调用。

我在俯瞰什么?解决这个问题需要什么其他信息?任何帮助都会非常感激,因为我一直在努力解决这个问题。

重要摘要说明: 1.)应用程序在模拟器上按需运行。 2.)当我从AppDelegate请求时,不调用handleOpenURL方法。 3.)我没有收到任何错误/警告。 4.)我可以在我的设备上运行DemoApp,并且我注意到在'DemoAppAppDelegate'请求时,适当地调用了handleOpenURL方法。

提前致谢!

1 个答案:

答案 0 :(得分:3)

我最终不得不让我的facebook对象成为单身人士(存储在appDelegate中)。不完全确定为什么这是必要的,因为我没有在多个viewControllers中使用fb对象。如果你知道为什么这是必要的,请发表评论。

有关详细信息,请参阅以下链接:

handleOpenUrl and TabBar Application

Facebook SDK: Call from multiple viewControllers

Cocoa with Love: Singletons