iOS集成Facebook登录疑问:仅有AppDelegate.swift如何适配步骤5代码
解决Swift项目中Facebook登录的AppDelegate代码转换问题
嘿,我完全懂你现在的处境——Facebook开发者官网给的是Objective-C版本的AppDelegate代码示例,但你的项目用的是Swift写的AppDelegate.swift,别慌,我把对应的Swift代码给你整理好了,直接对应添加就行:
首先先把官网给出的Objective-C代码片段(你提到的部分)补全并引用出来,方便对照:
官网提供的Objective-C示例代码:
// AppDelegate.m #import <FBSDKCoreKit/FBSDKCoreKit.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; // 其他项目初始化代码 return YES; } // 处理URL跳转的回调方法 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]; // 若有其他第三方登录的URL处理,可在此补充 return handled; }
对应的Swift版本代码(适配AppDelegate.swift)
- 先导入Facebook核心框架
在AppDelegate.swift文件的最顶部添加:
import FBSDKCoreKit
- 在应用启动方法中添加Facebook初始化逻辑
找到application(_:didFinishLaunchingWithOptions:)方法,插入Facebook的初始化代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 初始化Facebook SDK ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) // 你的其他应用初始化代码保持不变 return true }
- 添加URL跳转的回调处理
在AppDelegate.swift中添加这个方法,用来处理Facebook登录后的URL跳转:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { let handled = ApplicationDelegate.shared.application(app, open: url, options: options) // 如果还有其他第三方服务的URL需要处理,可在这里添加对应逻辑 return handled }
额外注意(针对iOS 13+使用SceneDelegate的项目)
如果你的项目是iOS 13及以上,并且使用了SceneDelegate,还需要在SceneDelegate.swift中添加对应的URL处理逻辑:
import FBSDKCoreKit func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } _ = ApplicationDelegate.shared.application( UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation] ) }
这样就能完美替代官网给出的Objective-C代码,完成Facebook登录的集成步骤啦!
内容的提问来源于stack exchange,提问作者Tommy Jackson
相关产品推荐
相关产品推荐

