在线咨询 广州网站建设
当前位置:首 页 / 新闻 / 常见问题
  • 端开发

  • 2014.12.26
  • 更多
  •   

    1.在移动应用开发过程中,如何来使用APICloud端API接口?

    APICloud提供的端API设计思想与标准Javascript保持一致,并在此基础上引入了异步模块的思想,将一组高内聚,低耦合的功能封装在一个模块中,并以Javascript对象的形式开放API给开发者,该对象的使用遵循CMD模块定义规范,API接口调用方式和标准JavaScript对象一致。

    其中,api对象是APICloud端API中的核心对象,api对象本身就提供了移动应用开发需要的基础功能,如:layout布局、window管理、frame管理、event通知、动画切换、网络通信、数据存储、设备访问等接口。如调用api.openWin来打开新窗口,调用api.alert来弹出对话框等。其他扩展模块也是通过api.require方法来引入到程序中使用。下面以微信分享模块为例,介绍扩展模块的引入和使用方式:

    客户端代码书写:

        var wxObj = api.require('weiXin');
        //注册app至微信
        wxObj.registerApp({param}, callback(ret, err));
        //发送分享至微信
        wxObj.sendRequest({param}, callback(ret, err));
    

    其中:

    1. api对象为APICloud开放的核心Javascript对象,require函数用于引入模块,继而使用该模块下的API;
    2. 'weiXin'字符串是APICloud对微信模块库封装对象的描述;
    3. registerApp和sendRequest函数为微信模块库下开放的API;
    4. {param}为该API需要传入的参数集,标准的JSON对象;
    5. callback(ret, err)为该API的回调函数,正常回调通过ret返回,发生错误时通过err返回,ret以及err均为JSON对象;

    该对象API详情可参考相应的API文档。

    云端模块绑定:

    使用APICloud提供的某个模块后,在云端编译应用时需要绑定该模块,具体操作为:

    登录APICloud云服务器:http://www.apicloud.com

    选择相应的应用,进入“端开发”下的“模块”选项卡中,在右侧的模块列表中选中weiXin模块即可,如下图:

    图片说明

    2.怎么把url的图片文件保存到本地?

    答:api.download

    3.如何定义底部菜单按钮打开内置的html页面,是用open frame,还是什么方法?

    答:openFrame openWin 都可以

    4.用户的登录信息用什么保存好?cookie、localstorage还是什么?

    答:localstorage或者api.setPres或者

    5.重新加载页面是要哪个函数啊?

    答:重新 open这个window并传入reload参数或者 window.location.reload()

    6.APICloud有录视频的功能吗?

    答:api.getPicture 配置下参数,sourceType 设为camera,mediaValue 设为 video

    7.tabBar跟tabBarMenu,有啥不一样呢?

    答:一个是纯粹的tabBar,后者是带弹出菜单的tabBar

    8.用APICloud本地存储的数据是一定会同步到云端的吗?

    答:本地存储一定不会上传到云端,post可以传回服务器,本地存储里面的不写程序不会自动同步到云

    9.actionbutton点击子按钮以后不自动隐藏?

    答:actionbutton点击子按钮以后不自动隐藏这个问题会在本周出新版本,把隐藏不隐藏交给开发者自定义

    10.有人知道怎么调自己写的模块,怎么放到ide里面去?是不是需要重新生成一个AppLoader?

    答:目前需要上传到云端,然后在线编译,选中你的那个自定义模块IDE目前还么提供本地测试自定义模块的功能,你可以先找一个干净的模块开发工程,把你release出来的模块包中的东西再重新拷到这个工程中,如果能跑起来,不报错,那这个包上传到云端基本就不会有问题了

    11.apicloud有没有wifi类的API?

    答:IOS设备系统上没开放wifi管理相关的接口,Android是开放的,没有办法统一,所以目前没有提供,如果有需求的话,可以单独为android平台封装该模块

    12.当前时间戳是怎么调用的?

    答:new Date().getTime();

    13.我写了一个城市列表。假如选定了返回,我如何又返回到城市列表呢?

    答:用api.execScript,执行之前页面的api.closeWin();

    14.使用模块必须到云端先添加模块然后IDE更新了才能用哪个模块?

    答:IDE真机调试装了apploader的不需要添加模块IDE是集成了模块的,云端编译只需要添加你需要的模块编译即可

    15.reload和open的区别是什么?

    答:reload是将当前window所在的网页重新加载一次.open是新开一个window。

    16.APICLOUD有什么方法可以关闭当前窗口啊,所有窗口怎么写?

    答:可以调用api.closeWin({name:’xxx’})关闭当前窗口或指定窗口,或者调用api.closeToWin({name:'xxx'}),从当前窗口关闭到你想关的那个窗口

    17.Location services are not enabled.,ios调用baiduLocation怎么会出现这个?

    答:没有开启手机定位。

    18.listview 可以同时设置上拉刷新和下拉刷新吗?

    答:可以

    19.apicloud中网页的图片有缓存的机制吗?

    答:有的,存在沙箱中。

    20.apiCloud的UI结构,window跟frame是啥关系?是否一个app一次只能展示一个window,但可以有多个frame?

    答:一个app就是一个widget;每个widget允许有多个window,同时只允许一个window位于屏幕上,所以你可以将window看成当前屏幕;每个window下可以有多个frame和frameGroup,frame和frameGroup依附在window上,frameGroup包含一个可以横拖的frame数组。

    21.怎么读config.xml呢?

    答: NSArray * fetures = [theApp features];ios上的模块内部这样就读取config.xml,Android下面有继承自UZMoudule的对象下有getFeatureValue函数可用

    22.打开已经打开过的window的时候,怎样强制让这个window打开后刷新?

    答:强制刷新能力在下一版本中将支持,openFrame或者win时新增参数reload:true,标识强制已经存在的frame或win重新加载。

    23.请问一下openWin或者openFrame的时候,传的pageParam参数,在被打开的页面中这么获取?

    答:通过api.pageParam获取。

    24.头部标题栏把状态栏遮住了怎么办?怎么修改标题栏的颜色?

    答:api.setStatusBarStyle({
        style: 'light'
    }); 可以设置状态栏样式为浅色,如果你不想iOS中头部和状态栏重合,就不用调用$api.fixIos7Bar()方法,同时在config.xml里面把iOS7StatusBarAppearance配置成false

    25.下拉和上滑都刷新,请问怎么实现?

    答:上拉刷新目前没有提供,可以使用监听滚动到底部时实现加载更多。

    26.请问拍照的API在哪里?

    答:api.getPicture

    27.我在窗口打开的时候添加了一个事件侦听,当这个窗口关闭的时候要移除事件侦听吗?

    答:被api.closeWin的window不用做任何操作,底层会自动将这个window的所有内存进行回收和释放,包括各种模块的调用占用的资源网络请求占用的资源等等。

    28.app启动时可以添加图片或着动画效果吗?

    答:在控制台 “端设置” 里,鼠标悬停分辨率就可以出现上传按钮。

    29.焦点图模块scrollPicture 怎么在指定位置显示么?

    答:open的时候配置他的xywh(视图左上角点坐标和宽高)就行了,还有可以用fixedOn来指定添加到某个窗口上。

    30.openWin和openWidget有啥区别啊

    答:APICloud以widget来形容一个完整的App,相当于一个单独的App;每个widget由N个window构成,每个window中可以包括N个FRAME。因此openWidget相当于打开一个新的应用,openWin是在这个应用内打开一个占据屏幕UI渲染空间的window。

    40.UZUtility.makeRealPath(path,wgtInfo)这个API,是否是将 fs:// 等转换为真实路径?第二个参数:wgtInfo 是什么?

    答:可以转,但是对应的是SD卡上的沙箱路径,wgtInfo是模块开发中,继承自UZMODLUE对象下的类,可以直接getWidgetInfo获取

    41.api.openWin({name:'index', url:'../index.html', delay:100, pageParam: pageParam});我打开index.html,并传页面参数,请问怎么在index.html获参数?

    答:api.pageParam http://docs.apicloud.com/端API/api#a12

    42.如果我想插件里主动触发一个JS的事件,而不是JS->JAVA->JS这种回调模式的话,插件里该如何实现呢?比如:我的一个播放视频的插件,需要每个N时间,当前进度告诉JS的事件。

    答:UZModule下面有个execScript(final String winName, final String frameName, final String script)函数,可以通过执行JS来实现你的需求。

    43.apicloud里调用的全是单击事件 好像没触摸事件? 比如一个按钮 都是onclick 并不是touchstart

    答:需要响应onclick的元素,加上tapmode='xxx'属性即可,xxx可以是一个css样式,当该元素touchstart touchmove的时候就会展现xxx样式,tapmode还具有 速点击事件的功能,消除了JS中标准click事件的300毫秒延迟;有tapmode已经很完善了,如果需要,可以自行在代码中监听相应元素的touch事件。

    44.怎样实现全局变量的呢?比如用户的名称,在很多页面都有用到。

    答:localStorage或者api.setPrefs api.getPrefs 这一对可以实现全局变量。

    45.navigationMenu 这个控件是否支持左右滑动?

    答:支持,如果按钮太多,一屏显示不完,就可以左右拖动了。

    46.initial-scale=0.5, maximum-scale=0.5, user-scalable=0; scaleEnabled: true 安卓下不起效

    答:maximum-scale=0.5,minimum-scale=0.5,user-scalable=1,width=device-width,initial-scale=0.5

    47.navigationMenu不支持调样式吗 比如我想调下高度

    答:目前这个控件的高度是自适应屏幕大小的。

    48.scrollPicture 的 fixedOn 是干什么用的? 所指的视图是什么?我想把scrollPicture 嵌入到 Frame 中,跟着Frame 隐藏或者显示或者关闭?要怎么实现?

    答:fixedOn的值是frame的名称,默认scrollPicture是添加到主窗口上面的,若指定frame的名称,则会添加到指定的frame上面,也就是你想要的效果了。

    49.请问有直接拍照功能吗?

    答:有的,api的getPicture方法,sourceType参数传camera就是拍照了。

    50.api.openSlidLayout 开启的fixedPane 和 slidPane 是2个win 还是 2个 Frame?

    答:两个Pane是两个window,这两个window中你还可以open Frame,frameGroup等。

    51.在slidPane main-contain.html 中另外开启了一个Frame_1,在 Frame_1中开启了Frame_1_1 和 Frame_1_2,为什么用 closeFrame 关闭了 Frame_1,Frame_1_1 和 Frame_1_2 还在?难道Frame_1 , Frame_1_1 , Frame_1_2 是平级关系,主窗口都属于slidPane main-contain.html ?

    答:在同一个主窗口下打开的frame目前都是平级关系,它们都是添加到主窗口上面的,关闭其中一个frame对其它frame没有影响。

    52.为什么tabbar在ios下点击后直接退出应用? andriod下正常

    答:可以设置每屏显示按钮个数,底层会自适应屏幕平均分配按钮间距。

    53.frame怎么获取参数

    答:目前能够获取的frame属性有宽度、高度、名称和参数,通过api.frameWidth、api.frameHeight、api.frameName和api.pageParam获取。

    54.api.openFrame方法中带入的 pageParam 和 api.openWin方法中带入的pageParam 怎么区分?

    答:你在主窗口中调用api.pageParam,获取的是openWin传入的参数;而在子窗口中调用api.pageParam,获取的是openFrame传入的参数。

    55.在开发自定义第三方模块时,IOS代码中如何调用JS中的函数,在用Obj-c开发原生模块时,如何将socket返回的聊天信息返回给前端JS, 是否通过JS传入的回调函数进行?

    答:使用UZModule对象的 sendResultEventWithCallbackId: dataDict: errDict: doDelete:方法,其中的callbackId可以从你的方法的参数中通过cbId参数获取。

    56.如何读取Frame的属性

    答:判断frame是否存在可以在代码中用一变量标识;目前能够获取的frame属性有宽度、高度和名称,通过api.frameWidth、api.frameHeight和api.frameName获取。

  • 上一篇:APICloud

    下一篇:网站降权如何恢复?

  • 相关新闻