插件函数
tip
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();