iOS uni-app原生插件開發
開發准備
-
OS X 10.14.0+
-
Xcode 11.0+
-
-
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。
-
- 找到里面的HBuilder-uniPluginDemo文件夾,里面包含HBuilder-uniPlugin插件開發工程,后面會用到。
-
js代碼的開發工具HBuilderX
- 下載哪個版本的HBuilderX需要注意下,保持和上條中提到的SDK包(在下載SDK包的下載界面中有版本相關的文字描述如下圖),它提到的版本號一致。
-
確定SDK包里的Xcode工程HBuilder-uniPlugin內是否引用了SDK包里的liblibWeex.a庫和weex-main-jsfm.js文件
插件開發
-
首先用Xcode創建靜態.a庫工程或(靜態Framework工程)