zoukankan      html  css  js  c++  java
  • iOS uni-app原生插件开发

    iOS uni-app原生插件开发

    开发准备

    • OS X 10.14.0+

    • Xcode 11.0+

    • weex扩展API for iOS

      • Native 对外接口

        • 注册 SDK 默认的 Module、Handler 和 Component

        • 注册自定义 module、Handler 和 Component

        • 重置 JSFramework

      • Handler (对应于 Android 的 Adapter) 介绍

      • WXImgLoaderDefaultImpl 图片下载 handler。Weex 会把需要设置图片的 View 和 URL 透露出来,Native 端需要实现这个接口进行图片下载。WeexSDK kernel 本身没有提供图片下载的默认实现。

      @protocol WXImgLoaderProtocol <WXModuleProtocol>
    /**
      * @abstract Creates a image download handler with a given URL
      *
      * @param imageUrl The URL of the image to download
      *
      * @param imageFrame  The frame of the image you want to set
      *
      * @param options : The options to be used for this download
      *
      * @param completedBlock : A block called once the download is completed.
      *                 image : the image which has been download to local.
      *                 error : the error which has happened in download.
      *              finished : a Boolean value indicating whether download action has finished.
      */
    - (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)options completed:(void(^)(UIImage *image,  NSError *error, BOOL finished))completedBlock;
    @end
    
    • Native 和 JS 通信
    - 自定义通知事件 用于 native 自定义部分和 js 进行实践通知,比如传递下拉事件到 js,这个是在 component 基类的方法,可以直接使用
    /**
      * @abstract Fire an event to the component and tell Javascript which value has been changed.
      * @param eventName 事件名称,可以在weex文件某个标签组件监听,命名规范为 onXXX
      * @param params 数据
      * @param domChanges 发生改变的数据
      **/
    - (void)fireEvent:(NSString *)eventName params:(NSDictionary *)params domChanges:(NSDictionary *)domChanges
    
    • 事件回调 多用于 Module 回调结果给 js,回调类型分为下面两种:
    - WXModuleCallback 为了性能考虑,该回调只能回调通知js一次,之后会被释放,多用于一次结果
    
    - WXModuleKeepAliveCallback 该回调可以设置是否为多次回调类型,多次回调的场景如持续监听位置的变化,并返回给 js。
    @implementation WXEchoModule
    @synthesize weexInstance; // 让该module 获得当前instance
    WX_EXPORT_METHOD(@selector(echo:))
    - (void)echo:(NSString *)param callback:(WXModuleKeepAliveCallback)callback
    {
      callback(param,ture);// 此处设置true,该回调function 可以多次回调执行,可以写循环测试.
    }
    • 动态适配容器
    - WeexSDK 在 WXSDKInstance 类中提供了方法 setFrame(CGRect) 来改变容器的大小。如:在导航栏从有到无过程,需要 weexView 的变化, 可以在此时 native 调用该方法设置
    • 降级使用
    - Weex 处于发展阶段会增加一些新的特性和功能,但是这些新的特性和功能都必须升级 SDK 才能实现,对于没有升级的应用应该怎么处理呢?可以使用降级功能。
    
    - 所谓降级功能就是 Weex 无法运行的版本或者手机,可以用 Weex h5 来代替。
    
    - Native 端可以通过接口 WXSDKInstance 中的 onFailed 回调进行处理,如果是主动降级则返回的错误 domain 为 TemplateErrorType,Native 端可以跳转到对应的 H5 页面,或者用其他的方式提示用户当前环境不支持 Weex。
    • 最新版本的SDK包

      • 找到里面的HBuilder-uniPluginDemo文件夹,里面包含HBuilder-uniPlugin插件开发工程,后面会用到。
    • js代码的开发工具HBuilderX

      • 下载哪个版本的HBuilderX需要注意下,保持和上条中提到的SDK包(在下载SDK包的下载界面中有版本相关的文字描述如下图),它提到的版本号一致。
    • 确定SDK包里的Xcode工程HBuilder-uniPlugin内是否引用了SDK包里的liblibWeex.a库和weex-main-jsfm.js文件

    插件开发

  • 相关阅读:
    俞敏洪谈大学爱情:终于在清华说实话了
    人的有两面性
    冯亚丽,打造1500亿帝国的奇女子
    做企业就要有精气神
    当心!“饭桌教育”祸害你的孩子
    为何企业宁可高薪招人,也不给老员工加薪?
    住的离公司有多远,成长就有多难
    物理像素,逻辑像素,解决1px的问题
    移动端布局 + iscroll + 滚动事件
    移动端布局 + iscroll.js
  • 原文地址:https://www.cnblogs.com/liuxiaokun/p/12686295.html
Copyright © 2011-2022 走看看