当初,APICloud 利用,能够一键生成微信公众号!
APICloud 基于积淀已久的 iOS/Android 原生引擎开发技术,联合微信公众号运行环境的特点,针对性地推出了为其量身定制的适配器环境,任何规范APICloud利用,都能够在不批改或极小批改之后,间接运行在微信环境中。
基于 APICloud 利用生成的微信公众号,开发者可间接获取源码,部署到本人服务器上。外围配置文件,开发者可依据服务器环境须要,灵便批改。最重要的是: 为了便于开发者二次开发或与微信业务进一步对接,咱们提供了足够凋谢和灵便的自定义扩大机制,开发者可依据业务须要,重写任意 APICloud 模块的外部实现。
步骤
- 登录 APICloud 网站控制台,抉择或新建一个 Native 原生利用.
- 点击 "云编译"页面的 "一键生成微信公众号"
- 点击 "一键生成微信公众号"按钮,期待编译实现.
4. 部署
把云编译生成的压缩包,解压放到网站动态资源根目录,而后就能够通过相似 http://www.exapmle.com/A60553... 一类的值来拜访.其中 A6055344415623 要替换为本人利用的 appId.
如果不想放在网站根目录,须要对应批改 web_adapter/script/config.js 中的相干配置.
5. 跨域拜访问题
No 'Access-Control-Allow-Origin' header is present on the requested resource.
如果控制台呈现相似谬误,阐明以后预览微信公众号的网站与服务器接口不在同一个域名下,有两种解决方案:
批改服务器端接口设置,容许跨域拜访.
将云编译生成的动态资源包搁置在到网络接口所在的服务器,保障二者能够在同一域名下拜访.
6. 原生模块适配问题
APICloud 当初能够主动适配原 APICloud 原生 App 中规范 WEB 技术相干的逻辑.波及到应用 APICloud 原生模块的中央,还须要开发者自行定制开发.
为了放弃代码写法的统一,咱们提供了和 APICloud 原生引擎相似的扩大机制,开发者可基于此重写 APICloud 原生模块的相干逻辑.
开发者原有代码个别不须要做批改,只须要按照咱们提供的扩大机制,针对性地增加局部原生模块的扩大代码,即可实现微信公众号的适配.详见下文 "扩大" 局部
扩大
APICloud 微信公众号适配器, 基于纯 Web 技术, 并针对微信的 Web 环境,有所优化.在接口实现上, 与 APICloud Native 引擎保持一致.基于此, 任意规范 APICloud 原生利用,都能够极低成本,迭代为微信公众号,甚至规范的网页利用.
APICloud 微信公众号适配器,在实现时,做了最大水平的开放性和灵活性设计.咱们容许开发者重写任意 APICloud API 引擎对象或原生模块的任意办法和属性.
任意界面,只须要实现一个 apiadapter 办法,就能够在此办法内,拦挡和重写 APICloud 模块办法的具体实现.
/*当 frame, window, adapter 级别同时实现此函数时,加载优先级为: frame > window > adapter > 内置默认实现@payload:@moduleName 模块名.@method 办法名.@isSync 是否是同步办法.@params 调用模块办法时的参数.@frameDom frame 所在的 window dom对象.@winDom window 所在页面的 window dom 对象.@apiDom adapter 所在页面的 window dom 对象.@cbId 调用模块办法时,传递的回调函数的惟一标识.@callback 用于异步返回值的回调函数.(cbId, ret, err, del)=>{}@cbId 调用模块办法时,传递的回调函数的惟一标识.@ret 模块返回值.@err 错误信息.@del 调用后,是否删除此 cbId 对应的回调函数.删除后,下一次基于同一 cbId调用callback,将无奈正确回传返回值.@return: 不作解决.如果不想解决某个模块办法, 应该显式返回字符串 'TO_NEXT_API_ADAPTER',以便往上流传调用.*/function apiadapter(payload) {/* TODO: 自定义的解决逻辑. *//* 默认不作解决. */return "TO_NEXT_API_ADAPTER";}
扩大倡议
异步办法的返回值,最好通过传入的 callback 和 cbId 传递.
同步办法的返回值,能够间接 return 返回相干值.
在解决 UI 类模块时,可在模块办法调用时增加一些自定义字段,以便于 apiadapter 能正确处理 UI 类模块的地位.如增加一个新的 parentDomId 字段,以便能自定义指定模块的父元素.