You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成fbsdk-next报错:'FBSDKApplicationDelegate'未声明标识符

React Native集成react-native-fbsdk-next报错:未声明标识符'FBSDKApplicationDelegate'

在构建React Native应用时,安装并配置react-native-fbsdk-next包后,反复出现以下编译报错:

error: use of undeclared identifier 'FBSDKApplicationDelegate' if ([[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options]) { ^

尝试过相关解决方案但问题依旧,以下是当前的配置代码:

相关配置代码

AppDelegate.mm文件

#import "AppDelegate.h"

#import <React/RCTBundleURLProvider.h>
#import <AuthenticationServices/AuthenticationServices.h>
#import <SafariServices/SafariServices.h>
#import <FBSDKCoreKit/FBSDKCoreKit-Swift.h>
#import <React/RCTLinkingManager.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  if ([[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options]) {
    return YES;
  }

  if ([RCTLinkingManager application:app openURL:url options:options]) {
    return YES;
  }
  
  return NO;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  self.moduleName = @"AppName";
  // 可在下方字典中添加自定义初始属性,会传递给React Native使用的ViewController
  self.initialProps = @{};

  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
  return [self getBundleURL];
}

- (NSURL *)getBundleURL
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}

@end

Info.plist配置

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb<my-id></string>
            </array>
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>$(CURRENT_PROJECT_VERSION)</string>
    <key>FacebookAppID</key>
    <string><my-id></string>
    <key>FacebookClientToken</key>
    <string><my-token></string>
    <key>FacebookDisplayName</key>
    <string><app-name></string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-share-api</string>
    </array>

Podfile配置

手动链接的Pod依赖:

pod 'react-native-fbsdk-next', :path => '../node_modules/react-native-fbsdk-next'

尝试过的额外配置:

installer.aggregate_targets.first.user_project.native_targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['LIBRARY_SEARCH_PATHS'] = ['$(inherited)', '$(SDKROOT)/usr/lib/swift']
      end
    end

解决方案尝试

  1. 替换头文件导入:将#import <FBSDKCoreKit/FBSDKCoreKit-Swift.h>替换为Objective-C原生头文件#import <FBSDKCoreKit/FBSDKCoreKit.h>,FBSDKApplicationDelegate是Objective-C类,Swift头文件可能未正确暴露该类。
  2. 添加SDK初始化代码:在didFinishLaunchingWithOptions方法中加入Facebook SDK初始化逻辑,确保SDK被正确加载:
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      // 初始化Facebook SDK
      [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
      
      self.moduleName = @"AppName";
      self.initialProps = @{};
    
      return [super application:application didFinishLaunchingWithOptions:launchOptions];
    }
    
  3. 更新Pod依赖并清理缓存:执行以下命令更新Facebook SDK到兼容版本,同时清理Pods缓存:
    pod deintegrate && pod update FBSDKCoreKit && pod install
    
  4. 启用Swift混编支持:如果项目未启用Swift,在Xcode中新建一个空的Swift文件(命名为Dummy.swift即可),Xcode会自动生成桥接文件,确保Swift和Objective-C代码能正常交互。
  5. 检查Build Settings配置:打开Xcode项目的Build Settings,确认FRAMEWORK_SEARCH_PATHS包含$(inherited),保证Facebook SDK框架能被正确检索到。

内容的提问来源于stack exchange,提问作者Luddepb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:51