使用 Objective C 将 Facebook SDK 15.x 与 iOS 集成是否可行

Sen*_*mar 7 facebook objective-c facebook-graph-api ios swift

我们能够测试具有 Objective-C 接口的 FB iOS SDK 11.x,但是否可以对 FB iOS SDK 15.x 执行相同的操作,因为它似乎只包含 Swift 接口

我们能够测试具有 Objective-C 接口的 FB iOS SDK 11.x,但是否可以对 FB iOS SDK 15.x 进行相同的操作

gui*_*ume 2

虽然技术上是可行的,但 Facebook iOS SDK 的最低目标版本从v11 中的iOS 9提升到了 v15 中的iOS 12。您可能希望确保最低目标版本匹配。

\n

此外,自 v13 以来,许多类型已从 Objective-C 转换为 Swift。因此,开发人员在使用某些 Facebook SDK 模块时可能需要使用模块化导入语句,以避免在 Objective-C 中遇到编译错误。

\n
// When importing a framework in this form:\n#import <FBSDKShareKit/FBSDKShareKit.h>\n\n// You may be need to update to this form when unknown symbol warnings appear:\n@import FBSDKShareKit;\n
Run Code Online (Sandbox Code Playgroud)\n

来源 - https://github.com/facebook/facebook-ios-sdk/blob/main/CHANGELOG.md#swift-conversions

\n

本质上,您在 Objective-C 实现中使用的 Swift 源将通过生成的称为“桥接”标头的标头进行访问。例如,正确配置后,FBSDKCoreKit会生成一个FBSDKCoreKit-Swift.h可让您访问 Swift 实现的 . 请注意,当模块被模块化导入指令(例如 )引用时,会自动使用此桥接标头@import FBSDKCoreKit如果您使用Cocoapods,这就是正确的方法这就是要走的路。

\n

否则,如果您想手动构建和引用该模块,Swift 文档提供了有关您想要实现的目标的指导:

\n
\n

要在与 Objective-C 代码相同的框架目标中导入一组 Swift 文件,请将 Xcode 为 Swift 代码生成的标头导入到要在其中使用 Swift 代码的任何 Objective-C .m 文件中。

\n

由于生成的标头是 Framework\xe2\x80\x99s 公共接口的一部分,因此只有标有 public 或 open 修饰符的声明才会出现在框架目标的生成标头中。Objective-C 运行时可以访问使用Internal 修饰符标记并在继承自Objective-C 类的类中声明的方法和属性。但是,它们在编译时无法访问,并且不会出现在框架目标的生成标头中。

\n
\n

将 Swift 代码导入同一框架内的 Objective-C 中:

\n
    \n
  1. 在“生成设置”下的“打包”中,确保该框架目标的“定义模块”设置设置为“是”。
  2. \n
  3. 使用以下语法并替换适当的名称,将 Swift 代码从该框架目标导入到该目标内的任何 Objective-C .m 文件中:
  4. \n
  5. 使用桥接头导入#import <ProductName/ProductModuleName-Swift.h>
  6. \n
\n

来源 - https://developer.apple.com/documentation/swift/importing-swift-into-objective-c

\n