通过apicloud封装h5网址实现图片保存

管理员组 lyj 21天前 50

在apicloud中的代码

function shopSession(a) {
        var str = a.split('?')[0];
        var index = str.lastIndexOf("\/");
        str = str.substring(index + 1, str.length);
        var filename = str.split('.')[0];
        api.download({
            url: a, // 图片地址
            savePath: 'fs://' + filename + '.jpg', // 图片存储路径
            report: true,
            cache: true,
            allowResume: true
        }, function(ret, err) {
            api.saveMediaToAlbum({
                path: 'fs://' + filename + '.jpg',
            }, function(ret, err) {
                if (ret && ret.status) {
                    alert('保存成功');
                    return;
                }
            })
        });
    }
    // 保存图片
    function shopSessionWx(a) {
        alert(a)
    }

在封装的h5端的页面代码

$.fn.longPress = function(fn) {
    var timeout = undefined;    var $this = this;    for(var i = 0;i<$this.length;i++){
        $this[i].addEventListener('touchstart', function(event) {
            timeout = setTimeout(fn, 500);  //长按时间超过500ms,则执行传入的方法        }, false);                    $this[i].addEventListener('touchend', function(event) {
            clearTimeout(timeout);  //长按时间少于500ms,不会执行传入的方法        }, false);    }
}
$('#shop-img img').longPress(function () {
    try {
        api.execScript({
            name : 'root',  //由于直接在index上使用openFrame,因此只需name root。            
            script : "shopSession('{php echo tomedia($goodscode)}')"        });    }catch (e) {

    }
})

实现原理:

apicloud中调取原生组件,通过apicloud封装的页面暴露了交互的接口。

这样就可以实现apicloud和h5进行交互。其实我们在h5中触发的方法回传给apicloud。

还没有人收藏过本帖~
最新回复 (0)
返回