Facebook发送请求应用程序代表

时间:2012-11-18 21:16:46

标签: ios xcode facebook

我有一个带.h,.m文件和两个appDelegate文件的示例代码。我想将项目的功能添加到我的应用程序中。前两个文件是一个ViewController文件,所以我只需要将其拖入,但其他两个是AppDelegate,我显然不能有两个app delegate。但是在这个示例应用程序的情况下,app委托被用作正确的viewcontroller,因为在UIViewController文件的.m文件中,有这样的代码:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

由于AppDelegate不使用像willBecomeActive ...这样的功能,如何在UIViewController文件中转换文件?我需要在上面的代码中更改以调用控制器而不是代理(我的AppDelegate将保持不变)。

代码在这里:https://github.com/fbsamples/ios-3.1-howtos/tree/master/SendRequestsHowTo ...然后打开项目:SendRequestsHowTo ...它只有4个文件

P.S。我想我必须创建一个像app delegate这样的东西,虽然不是app委托。

1 个答案:

答案 0 :(得分:1)

我可以理解你想将代码从SendRequestsHowTo移动到你的项目中。你不想通过AppDelegate使用Facebook吗? 您可以创建新类(例如FacebookManager)。然后将代码从SendRequestsHowTo的AppDelegate移动到FacebookManager,你就可以使它成为单例。 然后你可以从ViewController访问:

FacebookManager *manager = [FacebookManager sharedManager];
[manager openSessionWithAllowLoginUI:NO]

从AppDelegate到handleOpenURL:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    self.openedURL = url;
    // attempt to extract a token from the url
    return [[FacebookManager sharedManager] handleOpenURL:url];
}

不要忘记将CFBundleURLTypes添加到Info.plist,它应该如下所示:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890</string>
        </array>
    </dict>
</array>

Facebook iOS Safari "Cannot Open Page Error" When Authenticating User with Single-Sign-On