apicloud新手总结

使用apicloud结合vue进行app开发。
这里只总结我所遇到并且已解决的问题方法。
目录:
1、apicloud新手总结
2、apicloud同原生app与h5的数据交互
3、apicloud七牛云视频上传并截取第一帧js实现

1、手机白屏问题:分清楚网络数据连接原因还是代码原因

(1)网络数据连接问题

这个问题通常在app第一次安装启动时出现
问题分析:app启动数据请求直接进行,但此时部分手机需要app联网权限的确认,这时数据请求是在没有网络的条件下进行,造成数据获取失败,在首页数据请求过多的情况下出现白屏
解决方法:(启动页方法请自行百度,这里只介绍我所使用的方法)
在你需要的页面添加数据连接的监听事件,当app获取网络权限或者从断网状态转变成联网状态时重新进行数据的获取。
注意:需要刷新的页面有swiper轮播数据时把swiper轮播隔出来,不然swiper轮播会混乱

apiready = function(){
    vm.tid = api.pageParam.obj;     //接收传参数据
    vm.init();                 //所需数据的获取与数据赋值
    api.addEventListener({
    name:'online'           //监听网络连接状态
    }, function(ret, err){
    if(ret.connectionType) {
        vm.init();      //网络连接时重新进行数据请求
     }
    });
}
(2)代码原因

问题分析与解决方法:

  • 在vue中使用ES6语法:vue中使用es6语法很方便,但是在没有bable转码器进行转码的情况下部分手机并不能识别es6,所以还是老老实实使用es5语法吧!
  • config的配置文件中出现注释:在这个问题纠正过来以后我才恍然大悟我犯了这么一个超低级的错误。

2、图片轮播问题:多个轮播块之间的冲突和获取数据顺序

(1)多个轮播块之间发生冲突

问题出现:同一个页面多个轮播模块一起运行,比如一个页面有两个左右的图片轮播,如果使用同一个轮播插件,那么你会发现,在某些时候两个轮播模块滚动是同步的,而你对轮动的设置对其中一个来说并没有生效
这里显示一个左右轮播一个上下公告轮播使用不同轮播方式的解决方法
解决方法:在你确定同一个插件使用会出现同步的情况下就使用两个插件分别进行轮播滚动吧。(不仅仅适用于apicloud,出现类似情况都可用)
比如说apicloud的app首页中,一个大图左右轮播,一个公告上下轮播。
其中左右轮播使用apicloud封装好的模块“UIScrollPicture”,按照文档实例将数据带入即可

<!-- 轮播滚动装载元素 -->
<div id="aui-slide2"></div>
var UIScrollPicture = api.require('UIScrollPicture');  //引入模块
UIScrollPicture.open({
    rect: {                 //轮播的位置,其中 $api.dom("#aui-slide2")是轮播图片的装载元素
        x: $api.dom("#aui-slide2").offsetLeft,   
        y: $api.dom("#aui-slide2").offsetTop,
        w: $api.dom("#aui-slide2").clientWidth,
        h: $api.dom("#aui-slide2").clientHeight
    },
    data: {
        paths: imgs,        //需要进行轮播的图片数组
    },
    styles: {
        indicator: {
          dot:{                 //小圆点的设置
              w:10,
              h:10,
              r:5,
              margin:4.5
           },
           align: 'center',
           color: '#FFFFFF',
           activeColor: '#d45151'
        }
    },
    placeholderImg: 'widget://res/slide1.jpg',
    contentMode: 'scaleToFill',
    interval: 3,
    fixedOn: "index",
    loop: true,
    fixed: false
});

上下轮播引入swiper轮播框架进行公告轮播

<!-- 滚动着的变化公告 -->
<div class="aui-col-xs-9">
    <div class="swiper-container">
        <ul class="swiper-wrapper"></ul>
    </div>
 </div>
    // 轮播公告
                            var bannerHtml = '';
                            vm.notice = data.mess_list;
                            // alert(JSON.stringify(vm.notice));
                            for(var i=0;i<vm.notice.length;i++){
                                 bannerHtml+='<li style="padding-left:.75rem;font-size:.65rem;height:1.45rem;" class="swiper-slide aui-ellipsis-1" tapmode onclick="show('+i+')"><span style="color:#000;font-weight:bold;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;">'+vm.notice[i]+'</span></li>'
                            }
                            $api.html($api.dom(".swiper-wrapper"), bannerHtml);
                            swiper();
        function swiper() {
            var mySwiper = new Swiper ('.swiper-container', {
                direction: 'vertical', // 垂直切换选项
                speed: 400,
                height: document.querySelector(".aui-row").offsetHeight,
                loop: true, // 循环模式选项
                observer:true,//修改swiper自己或子元素时,自动初始化swiper
                observeParents:true,//修改swiper的父元素时,自动初始化swiper
                autoplay: {
                    delay: 2000,//2秒切换一次
                    disableOnInteraction:false, //解决滑动后不能轮播的问题
                },
                onSlideChangeEnd: function(swiper){
           swiper.update();
           mySwiper.startAutoplay();
            mySwiper.reLoop();
                }
            })
        };
(2)数据获取先后问题

为什么有这个问题:
首先总结一下轮播会出现的问题:

在页面铺设时事先把轮播装载容器设好,数据获取后只进行数据的填充 ==> 轮播要么停止进行只显示一个,要么轮播只运行一次就停止

这个问题主要是针对swiper轮播的

swiper框架功能很强大,但是它的脾气也很大,比如和页面刷新不兼容、数据请求完元素生成以后再进行轮播设置。
上面的代码是部分代码,下面附上轮播完整代码

var UIScrollPicture = api.require('UIScrollPicture');
$api.get('轮播数据请求地址',function(ret){
    if(ret["code"] == 1) {
        var data = ret.data;
        // 左右轮播图片
        vm.img = [];
        var imgs = data.banner_list;   //轮播图片
        for(var j=0;j<imgs.length;j++) {
            // vm.img.push(vm.pathUrl+imgs[j]);
            imgs[j] = vm.pathUrl+imgs[j];     //把获取到的轮播图片地址变成网络图片地址(添加上服务器域名)
        }
        UIScrollPicture.open({
            rect: {
                x: $api.dom("#aui-slide2").offsetLeft,
                y: $api.dom("#aui-slide2").offsetTop,
                w: $api.dom("#aui-slide2").clientWidth,
                h: $api.dom("#aui-slide2").clientHeight
            },
            data: {
                paths: imgs,
            },
            styles: {
                indicator: {
                    dot:{
                        w:10,
                        h:10,
                        r:5,
                        margin:4.5
                    },
                    align: 'center',
                    color: '#FFFFFF',
                    activeColor: '#d45151'
                }
            },
            placeholderImg: 'widget://res/slide1.jpg',
            contentMode: 'scaleToFill',
            interval: 3,
            fixedOn: "index",
            loop: true,
            fixed: false
        });
        // 轮播公告
        var bannerHtml = '';
        vm.notice = data.mess_list;      //公告轮播数据
        // alert(JSON.stringify(vm.notice));
        for(var i=0;i<vm.notice.length;i++){       //生成轮播元素
             bannerHtml+='<li style="padding-left:.75rem;font-size:.65rem;height:1.45rem;" class="swiper-slide aui-ellipsis-1" tapmode onclick="show('+i+')"><span style="color:#000;font-weight:bold;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;">'+vm.notice[i]+'</span></li>'
        }
        $api.html($api.dom(".swiper-wrapper"), bannerHtml);
        swiper();     //开始进行轮播
    };
},'json');

3、app判断用户是否登录

app一般使用token值进行用户是否登录的判断,使用时直接进行判断即可。
但需要注意的是是否登录进行判断时需要判断的是正负,而不是token是否为空

if($api.getStorage("token")) {
    api.openWin({
        name: 'name',
        url: 'widget://win.html',
        pageParam: {
            name: name,
            title: title,
            url: url,
            obj: obj
        }
    });
}else {
    // 用户未登录,点击事件触发跳转到登录界面
    // api.toast({
        //     msg: '您还未登录,请先进行登录!',
        //     duration: 1000,
        //     location: 'middle'
    // });
    toLogin();
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,619评论 4 59
  • 在另一篇文章中说明了“规划项目结构”的重要性,在这篇文章中则要来谈谈如何实践。 决定结构的依据 在决定项目结构的分...
    _WZ_阅读 379评论 0 1
  • 短短仔的光陰,𨑨迌著趁少年時。求名利無了時,千金難買好人生。—— 《世界第一等》歌词 曾几何时,也想过自己飞到凡人...
    竹村浪里个郎阅读 465评论 0 1
  • 一直是很喜欢杨蓉的,虽然这些年她一直没能大红大紫,但好在她一直都在,继续演戏,做自己,这样真好。 无论是古灵精怪的...
    夏小忧yo阅读 414评论 0 1