美文网首页
APICloud 项目学习小结

APICloud 项目学习小结

作者: 小PY | 来源:发表于2019-01-16 10:15 被阅读15次

    1、开发工具

    APICloud Studio2

    下载地址:https://www.apicloud.com/devtools

    支持mac、windows、linux3种操作系统

    2、真机调试

    在客户端下载AppLoader

    地址:https://docs.apicloud.com/Download/download

    可以在APICloud官方网站上创建项目,也可以在APICloud Studio2开发工具中创建,如图2-1所示:

    2-1

    创建/打开项目后连接真机调试,下载AppLoader后,使用ip和端口号连接运行,如图2-2选中项目名称,右键-查看WIFI真机同步IP和端口后,项目右上角会出现如图2-3所示的方框

    2-2 2-3

    安装AppLoader进入后,屏幕上有个灰色的小圆圈,点击输入IP和端口号后,小圆圈变浅绿色即连接成功。这个时候就可以运行项目了,项目中常用的快捷键有:

    control + i :运行整个项目

    control + o:运行当前页面

    control + option + B : 代码整理

    3、常用知识点

    1)、本地存储:用于登录后存储登录名和随机码等

    存:$api.setStorage('loginName', ret.body.loginName);

    取: var loginName = $api.getStorage('loginName');

    2)、传递参数: 用于从A页面跳转到B页面时传值等,pageParam为包含参数的json串,当有参数需要传递时使用openWin方法,没有参数时可以直接使用href跳转,例:<a class="sousuo" href="index.html"></a>

    api.openWin({

                                    name: 'index',

                                    url: './index.htm,

                                    pageParam: {

                                       param:"name",

                                    }

                                });

    3)、取值赋值:根据id给某控件赋值或获取某个控件的值

    a、value赋值:

    document.getElementById('name').innerText=“小明”;

    b、value取值:

    var username = document.getElementById('name').value;

    c、img标签图片赋值:

    document.getElementById('image').src = '../image/dh-6.png'

    d、div标签网络图片赋值:

    document.getElementById("headurl").style.backgroundImage = 'url(' + url + ')';

    e、div标签设置背景颜色:

    document.getElementById('color').style.backgroundColor = '#0068b7';

    4)返回键无效:使用a标签跳转进入的页面在点击返回时,通常使用

    <a href="#" class="back"  onclick="history.go(-1);"></a>,但在iOS设备上,这句话是返回无效的,修改为<a href="#" class="back" onclick="history.go(-1);return false;"></a>

    5)iOS设备上使用openwin方法跳页时,一闪而过会显示黑屏,加上 bgColor: 'white'这句话就没问题了

    api.openWin({

                name: 'index',

                url: './index',

                bgColor: 'white',

            });

    6)安卓物理返回键无效:在安卓设备上运行APICloud平台的项目时,偶尔会发生物理返回无效的问题,解决办法如下,在apireadey里调用该方法就可以了

    function andriodBack() {

      api.addEventListener({

          name: 'keyback'

        }, function(ret, err) {

          api.historyBack();

      });

    }

    7)、时间戳转换成yyyy-MM-dd 00:00:00方法

    //时间戳转时间

    function formatDate(unix) {

        var now = new Date(parseInt(unix) * 1);

        now = now.toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");

        if (now.indexOf("下午") > 0) {

            var temp1 = now.substring(0, now.indexOf("下午")); //2014/7/6

            var temp2 = now.substring(now.indexOf("下午") + 2, now.length); // 5:17:43

            var temp3 = temp2.substring(0, 1); //  5

            var temp4 = parseInt(temp3); // 5

            temp4 = 12 + temp4; // 17

            var temp5 = temp4 + temp2.substring(1, temp2.length); // 17:17:43

            now = temp1 + temp5; // 2014/7/6 17:17:43

            now = now.replace("/", "-"); //  2014-7/6 17:17:43

            now = now.replace("/", "-"); //  2014-7-6 17:17:43

        } else {

            var temp1 = now.substring(0, now.indexOf("上午")); //2014/7/6

            var temp2 = now.substring(now.indexOf("上午") + 2, now.length); // 5:17:43

            var temp3 = temp2.substring(0, 1); //  5

            var index = 1;

            var temp4 = parseInt(temp3); // 5

            if (temp4 == 0) { //  00

                temp4 = "0" + temp4;

            } else if (temp4 == 1) { // 10  11  12

                index = 2;

                var tempIndex = temp2.substring(1, 2);

                if (tempIndex != ":") {

                    temp4 = temp4 + "" + tempIndex;

                } else { // 01

                    temp4 = "0" + temp4;

                }

            } else { // 02 03 ... 09

                temp4 = "0" + temp4;

            }

            var temp5 = temp4 + temp2.substring(index, temp2.length); // 07:17:43

            now = temp1 + temp5; // 2014/7/6 07:17:43

            now = now.replace("/", "-"); //  2014-7/6 07:17:43

            now = now.replace("/", "-"); //  2014-7-6 07:17:43

        }

        return now;

    }

    8)、拍照上传

    在使用APICloud拍照上传功能时,iOS端没有什么问题,但在安卓端有3个问题需要注意。

    a、在iOS端进入相机/相册后,点击取消时,即不执行上传图片的网络请求,但在安卓端,点击取消后仍会执行网络请求,解决办法:在执行网络请求前判断img常量是否为空

    if (imgPath == null || imgPath == '' || !imgPath) {

                api.hideProgress();

                alert('请选择图片');

            } else {

            //ajax网络请求

    }

    b、在使用 api.getPicture()方法获取到的ret.base64Data(上传给后台的base64编码),上传时需要做截取,否则后台无法使用,如图8-1所示,iOS从22位开始截取,安卓从23位开始截取

    8-1

    获取设备类型方法如图8-2所示

    8-2

    c、在安卓端使用拍照作为上传方式时,执行到ajax的上传方法网络请求时,会直接走error方法,报错,如图8-3所示

    8-3

    原因:虽然拍照后能获取到base64编码,但图片过大,导致无法上传给后台

    解决办法:在api.getPicture方法调用中,限制图片的宽高 targetWidth: 300,targetHeight: 300即可,如图8-4所示

    8-4

    9)、列表赋值和单条数据点击传值

    列表赋值:在APICloud里列表赋值与iOS开发的TableView不同,而是把要循环的html写在循环内,如图9-1,后使用 $("#list_Receive").append(a);赋值或document.getElementById('list_Receive').innerHTML += a;其中list_Receive为存放列表的容器id

    9-1

    单条数据点击传值:图9-1的第一行代码中的onclick=\"pushtoOrderDe(\'' + orderId + '\')\",即点击传值,传递orderId,当需要传递多个参数时用”,“间隔,点击后代码如图9-2所示,orderId即所需传递至下一页面的参数

    9-2

    10)、图片点击放大-jQuery缩放效果lightbox插件

    在head标签里倒入<script src="../js/zoomify.min.js"></script>,

    <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>

    <link rel="stylesheet" href="../css/zoomify.min.css"> 

    在所需要放大的div或img标签内添加class="zoomify",并实现

    <script>

        $(function() {

          $('.zoomify').zoomify();

        });

    </script>方法

    参照demo:http://www.dowebok.com/214.html

    4、坑集

    1、在APICloud上使用ping++模块实现支付功能的过程中现有以下漏洞,

    在前期准备工作都完好的前提下,当后台设置的channel=“wx”时(支付渠道),在安卓客户端调用ping++模块的pingpp.createPayment是无效的,并且设备会卡住不动,解决办法:把channel=“wx”改为channel=“wx_wap”,即由微信APP支付改为微信H5支付。但同时这样改完后在iOS客户端调用微信支付时,会导致支付成功后无法回调,故最终的解决办法:

    在接口调用中新增设备类别device参数,

    当device=“安卓”,后台设置channel=“wx_wap”;

    当device=“iOS”,后台设置channel=“wx”;

    (获取设备类型代码上图8-2中所示)

    相关文章

      网友评论

          本文标题:APICloud 项目学习小结

          本文链接:https://www.haomeiwen.com/subject/bevhfftx.html