簡述:MUI自定義插件意思就是能與原生做交互(例如:iOS视乐、Android)歼跟,為什么要用自定義插件阁吝,那是因?yàn)槭謾C(jī)部分功能MUI框架無法很好的實(shí)現(xiàn)或者解決,還有可能原生項(xiàng)目只是嵌入MUI部分功能需要交互來實(shí)現(xiàn)意蛀。
一:自定義插件開發(fā)步驟
(1).配置(web端與手機(jī)端做橋接)
? ? web文件manifest.json
? ? iOS文件feature.plist
(2).js通知iOS端
(3.)iOS攔截js端事件(接收js端參數(shù))
二:具體實(shí)現(xiàn)
? ? 1.配置
添加節(jié)點(diǎn)與json相對(duì)應(yīng),為了讓web端找到ios本地文件
例如:plugintext類型dic? 節(jié)點(diǎn)class LocationPlugin
2.js端代碼
function fnCustomPlugin() {
? ? var _BARCODE = "plugintext"; //插件別名
? ? var B = window.plus.bridge;
? ? var plugintest = {
? ? ? ? // 聲明異步返回方法
? ? PluginTestFunction: function(Argus1, Argus2, Argus3, Argus4, successCallback, errorCallback) {
? ? ? ? var success = typeof successCallback !== 'function' ? null : function(args) {
? ? ? ? ? ? successCallback(args);
? ? ? ? },
? ? ? ? fail = typeof errorCallback !== 'function' ? null : function(code) {
? ? ? ? ? ? errorCallback(code);
? ? ? ? };
? ? ? ? callbackID = B.callbackId(success, fail);
? ? ? ? // 通知Native層plugintest擴(kuò)展插件運(yùn)行”PluginTestFunction”方法
? ? ? ? return B.exec(_BARCODE, "locationFunctionArrayArgu", [callbackID, Argus1, Argus2, Argus3, Argus4]);
? ? }
? ? };
? ? window.plus.plugintest = plugintest;
}
3.ios端代碼
注意:這里要注意的是iOS端創(chuàng)建一個(gè)類健芭,類名自行定義需要倒入兩個(gè)頭文件
代碼:
- (void)locationFunctionArrayArgu:(PGMethod *)commands{
? ? if (commands) {
? ? ? ? NSLog(@"commands:%@",commands.arguments);
? ? ? ? [[NSNotificationCenter defaultCenter] postNotificationName:@"location" object:nil];
? ? }
}
完美的實(shí)現(xiàn)了自定義插件的功能县钥,最后祝大家2018技術(shù)更上一層樓