【问题标题】:Facebook send request app delegateFacebook 发送请求应用委托
【发布时间】:2012-11-06 20:04:51
【问题描述】:

我有一个示例代码,其中包含一个 .h、一个 .m 文件和两个 appDelegate 文件。我想将项目的功能添加到我的应用程序中。前两个文件是一个ViewController文件,所以我只要把它拖进去,但另外两个是AppDelegate,我显然不能有两个app delegate。但是在这个示例应用程序的情况下,应用程序委托被用作适当的视图控制器,因为在 UIViewController 文件的 .m 文件中,有这样的代码:

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

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

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

附:我想我必须创建类似应用程序委托的东西,但它不是应用程序委托。

【问题讨论】:

    标签: ios xcode facebook


    【解决方案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

    【讨论】:

    • 但是handleopenurl,我保留在delegate中?
    • 这就是我所做的,(代码需要导入 FACEBOOK API):github.com/Alexmitico45/FacebookRequests/downloads ...继续下载并下载 archive.zip(4 个文件)但它仍然没有不工作
    • 你的 FacebookViewController 包含方法 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation ,但是这个方法来自 UIApplicationDelegate,你应该在你的 AppDelegate 类中使用它。
    • 究竟是什么不起作用?您是否使用 Facebook appId 将 CFBundleURLTypes 添加到 Info.plist 文件中? stackoverflow.com/questions/5131178/…
    • 我在 url 类型下添加了 url 方案,但它使错误 HTTP:错误 400
    猜你喜欢
    • 2012-11-14
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    相关资源
    最近更新 更多