在鸿蒙 ArkTS 中调用 iOS 库(Objective-C/Swift),同样依赖于 ArkUI-X 提供的平台桥接(Bridge)机制。

1. 核心桥接原理

与 Android 类似,ArkTS 无法直接调用 Objective-C 或 Swift 代码。平台桥接在底层同样通过 C++ 作为中间层,构建了 ArkTS ↔ C++ ↔ Objective-C 的通信链路。这一底层交互对开发者是透明的,在实际开发中,你可以将其视为 ArkTS 和 iOS 原生代码在进行直接交互。

2. 主要应用场景

当应用需要复用现有的 iOS 平台代码,而 OpenHarmony 中缺少对应的跨平台 API(非 UI 相关)时,平台桥接非常适用。具体包括:

  • 双向数据传递:在 ArkUI 与 iOS 平台之间传递 JSON 数据、图片等。
  • 调用平台 API:在 ArkTS 侧调用 iOS 的原生 API(如获取设备状态),或直接复用 iOS 端的三方库。
  • 平台回调 ArkTS:iOS 平台调用 ArkUI 侧的方法,例如复用 JavaScript 的三方库。

3. 数据类型映射

平台桥接支持通过 JSON 或二进制格式进行序列化编解码。在传递数据时,ArkTS 与 Objective-C 的数据类型存在严格的映射关系:

  • 基础类型string 对应 NSStringboolean 对应 NSNumber numberWithBool
  • 数值类型:ArkTS 的 number 根据精度可映射为 NSNumber numberWithInt(32位)、NSNumber numberWithLong(64位)或 NSNumber numberWithDouble
  • 集合类型Array 对应 NSArrayRecord/Map 对应 NSDictionary
  • 二进制流ArrayBuffer 对应 NSData
  • 空值null 对应 NSNull

4. 开发注意事项

  • String 传输限制:通过平台桥接传递的 string 类型数据,最大传输大小限制为 2MB。
  • Map 类型限制:Record(Map)类型仅支持 string 类型的 key,并且仅能用于方法的返回值。
  • API 参考:在 ArkUI 侧的具体用法请参考 Bridge API,iOS 侧的插件实现请参考 iOS BridgePlugin。

 

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐