gpt4 book ai didi

ios - Facebook API - 在何处实例化以及如何正确实现 handleOpenURL

转载 作者:可可西里 更新时间:2023-11-01 03:09:15 24 4
gpt4 key购买 nike

我正在为我的 iPhone 应用程序使用 Facebook API,有两个问题:

所有文档/示例似乎都将所有内容都放在 appDelegate 中:实例化 Facebook 对象并在 appDidFinishLaunching 中授权,并覆盖 application:handleOpenURL 方法。

在我的应用程序中,除非用户导航到特定 View 并按下按钮,否则我不希望发生任何事情。我知道在该 View 中,我将实例化 Facebook 对象并在按钮处理程序方法中启动授权,但是如何处理 application:handleOpenURL 的覆盖?我必须使用与我的特定 View Controller 中使用的不同的 FB 对象(在我的应用程序委托(delegate)中实例化)。

  1. 这种情况需要单例吗?还是让我的 appDelegate 实例化 FB 对象,并通过那里在我的程序中任何需要它的地方访问它是一个好的设计解决方案?

    在 FB 文档中,他们告诉您重写 application:handleOpenURL 方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
  1. 正如所写,这是否意味着您的应用程序将只能打开一种类型的 url?如果您的应用需要响应不止一个,则需要解析 url 参数以确定要采取的操作,对吗?

谢谢!

最佳答案

1) 两种解决方案都可以。但是使用单例当然更干净,特别是如果您打算在整个应用程序中重复使用它。

2) application:handleOpenURL method: 是外部调用应用的方式FB sdk 允许从 facebook 应用程序(如果已安装)或 safari 进行身份验证。一旦通过身份验证,您的应用程序将使用此处理程序回调。它以这种方式工作仅适用于支持多任务处理的设备这是简化登录和共享 session 的首选方式。但这不是强制性的...一个应用程序可以支持多个在应用程序中声明的 URL 方案,您可以检查(未经测试但应该是这样的):

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if ([url.scheme isEqualToString:@"fb<yourid>"])
return [facebook handleOpenURL:url];
else {
// do what you want
return YES;
}
}

关于ios - Facebook API - 在何处实例化以及如何正确实现 handleOpenURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5074655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com