插件函数
loadPlugin 载入一个插件
- 载入一个插件
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称 名称
- @return
布尔型true 代表成功,false 代表失败
function main() { // 例如插件是 helloworldplugin2.framework这样的文件名称,插件名称就是 helloworldplugin2 let pluginName = "helloworldplugin2" let loaded = pluginLoader.loadPlugin(pluginName) if (!loaded) { loge("载入插件失败") return } else { logd("载入插件成功") }}
main();makeInstance 载入一个类实例
- 载入一个类实例
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param clzName 类名称
- @returns
string返回的字符串如果是null或者是空 代表成功,其他的代表错误信息
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return }}
main();getErrorMsg 错误信息
- 获取错误信息
- @return
string有字符串代表有错误信息
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return }}
main();callMethodStr 调用插件实例函数返回字符串
- 调用插件实例函数返回字符串
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param clzName 类名称
- @param methodName 函数名称 字符串
- @param args 参数字符串
- @return
string字符串对象
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name)
if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return } let args = JSON.stringify({"a": 1, "b": "" + new Date()}) let rs = pluginLoader.callMethodStr(name, clzName, "testMethod", args) logd("testMethod 返回结果 " + rs)}
main();callMethodData 调用实例函数
- 调用实例函数返回字符串
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param clzName 类名称
- @param methodName 函数名称 字符串
- @param data swift语言中Data对象,相当于字节数组
- @return
string字符串对象
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return } let args = JSON.stringify({"a": 1, "b": "" + new Date()}) let rs = pluginLoader.callMethodReturnData(name, clzName, "testMethod", args) logd("testMethod 返回结果 " + rs)
let anyR = pluginLoader.callMethodData(name, clzName, "testMethod", rs) logd("callMethodData 返回结果 " + anyR)}
main();callMethodReturnData 调用实例函数
- 调用插件实例函数
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param clzName 类名称
- @param methodName 函数名称 字符串
- @param args 参数字符串
- @return Data swift语言中Data对象,相当于字节数组
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return } let args = JSON.stringify({"a": 1, "b": "" + new Date()}) let rs = pluginLoader.callMethodReturnData(name, clzName, "testMethod", args) logd("testMethod 返回结果 " + rs)
let anyR = pluginLoader.callMethodData(name, clzName, "testMethod", rs) logd("callMethodData 返回结果 " + anyR)}
main();callMethodAny 调用实例函数
- 调用插件函数参数返回值都是Any
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param clzName 类名称
- @param methodName 函数名称 字符串
- @param data 任意类型的参数
- @return Any swift语言中 Any 对象,js中的任意类型
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let ins = pluginLoader.makeInstance(name, clzName) if (ins == null || ins == "") { logd("实例化类成功: " + clzName) } else { loge("实例化类失败: " + clzName) return } let args = JSON.stringify({"a": 1, "b": "" + new Date()}) let rs = pluginLoader.callMethodAny(name, clzName, "testMethod", args) logd("callMethodAny 返回结果 " + rs)
logd("开始截图测试Any类型...")
setComputeMode(1) let img1 = image.captureFullScreen(); logd(img1)
// 测试1 let uiimage = image.autoImageToUIImage(img1) logd("autoImageToUIImage uiimage " + uiimage) let x = pluginLoader.callMethodAny(name, clzName, "testMethod", uiimage) logd(x) image.recycle(img1)
let img2 = image.captureFullScreenUIImage({}) let xX = pluginLoader.callMethodAny(name, clzName, "testMethod", img2) logd(xX)
let au = image.uiimageToAutoImage(uiimage) logd("au " + au)
// 保存到文件中 image.saveTo(au, file.getSandBoxFilePath("a.jpg")) image.recycle(au) image.recycle(img2)
}
main();readBundleFile 读取插件的文件
- 读取插件的文件
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param key 文件名称,不含有后缀
- @param ext 文件后缀,不要加.
- @return
string文件的字符串内容
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) logd("读取插件中的test.txt文件内容") let ins = pluginLoader.readBundleFile(name, "test", "txt") logd("readBundleFile 返回结果 " + ins)}
main();copyBundleFile 复制插件的文件到某个路径
- 复制插件的文件到某个路径
- 适配EC iOS 4.2.0+
- @param pluginName 插件名称
- @param key 文件名称,不含有后缀
- @param ext 文件后缀,不要加.
- @param dest 目标文件地址
- @return
booltrue代表成功
function main() { let name = "helloworldplugin2" let clzName = "Plugin1" let load = pluginLoader.loadPlugin(name) if (!load) { loge("载入插件失败: " + pluginLoader.getErrorMsg()) return } logd("载入插件成功 {}", name) let dest = file.getSandBoxFilePath("a.txt") logd("dest" + dest) logd("复制test.txt到" + dest) let ins = pluginLoader.copyBundleFile(name, "test", "txt", dest) logd("copyBundleFile 返回结果 " + ins)}
main();