根据原生插件工具操作指引生成一个多端插件工程项目
安装 Xcode,准备好 iOS 开发环境
iOS SDK >= 1.1.0
开发者工具 Nightly >= 1.06.2311282
-
-
-
- 工具版本 Nightly >= 1.06.2311282
- 工具「设置」->「安全设置」中已开启多端插件服务端口
- 插件模板已更新至最新(可重新创建插件项目)
在开始 iOS 多端插件的开发前,理解多端应用与多端插件的调用时序将更好帮助开发者进行开发。
在环境准备中创建的 iOS 插件工程模板,已替开发者完成:
以下只有 与 是必需操作,剩余操作开发者可按自身需求进行调整。
1. 插件实例化
2. 注册插件 Id
使用宏方法 注册插件 Id
3. 定义插件实例方法 initPlugin
4. 注册同步方法
- 注册方法
使用宏方法 注册同步方法。
- 同步方法的入参与出参
- 代码示例
OC 侧的插件同步方法实现
JS 侧的方法调用
5. 注册异步方法
- 注册方法
使用宏方法 注册异步方法。
- 异步方法的入参与出参
- 代码示例
OC 侧的插件异步方法实现
JS 侧的方法调用
6. 注册 AppDelegate 方法
多端 iOS 插件现在支持监听 AppDelegate 方法
- application:openURL:options:
- application:continueUserActivity:restorationHandler:
- application:didFinishLaunchingWithOptions:
- application:didRegisterForRemoteNotificationsWithDeviceToken:
- application:didFailToRegisterForRemoteNotificationsWithError
使用方法
- 开发者可通过调用继承于 的方法 来注册监听。
- 监听方法是插件对象的实例方法,其中方法签名与需监听方法保持一致,
7. 插件事件监听
从 iOS SDK >= 1.2.5 开始,支持在 JS 侧监听来自 Native 的事件。
- 在 Native 侧通过调用继承于 WeAppNativePlugin 的方法 可向 JS 侧发送事件。
- 在 JS 侧可使用插件实例的 方法注册监听
- 在 JS 侧可使用插件实例的 取消监听。
- 代码示例
OC 侧的插件异步方法实现
JS 侧的方法调用
8. 插件资源拷贝到主包
一般情况下,插件依赖的资源文件是一并打包放置在动态库中。如果开发者有需求将资源文件直接放置在主包中,可在插件项目的 里填写配置项 。如下图所示,在多端应用构建时会把 拷贝到构建生成的 IPA 的一级目录下。
project.miniapp.json文件的可视化配置中,在使用的插件下可以看到“将文件添加到原生插件中”,配置相对于小程序项目根路径的相对路径。
10. 启动即加载插件
一般使用插件的时候,只有当loadNativePlugin才会动态连接插件。但是部分场景需要app一启动就加载插件。
在开发阶段, 在插件的小程序项目project.miniapp.json中,配置loadWhenStart:true。即可模拟App启动即加载
在使用阶段,project.miniapp.json文件的可视化配置中,在使用的插件下可以看到“是否在App启动的时候就自动加载“。
工具在1.06.2405222版本开始支持
11. App Extensions
多端插件开发支持App Extensions。比如消息通知扩展,分享组件,桌面小控件等。xcode 的原生开发项目中,本身支持开发 appex 产物。
但是为了能在多端框架中使用,需要将 appex 编译的 scheme 和 target 名字设置为plugin id 开头的内容。在构建plugin的时候会将编译的appex产物上传。
在最终使用的时候,这些 appex 都需要进行签名。所以使用插件的小程序项目需要去苹果后台配置对应的 bundle id 和 profiles,并添加到project.miniapp.json中。
工具在1.06.2405222版本开始支持
插件调试完毕之后,开发者需要构建出 动态库供多端应用使用。
在工具中使用「构建 iOS 插件产物」,本质是调用 xcode 命令帮助开发者构建。当遇到工具构建失败时,开发者可在 目录下使用以下构建脚本自行定位失败原因:
以上就是本篇文章【# iOS 原生插件开发指引】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/quote/11517.html 栏目首页 相关文章 动态 同类文章 热门文章 网站地图 返回首页 企库往资讯移动站http://ww.kub2b.com/mobile/,查看更多 -
-