开发预加载资源接口
使用预加载服务之前,开发者需要完成云侧接口的开发,以提供预加载所需的资源数据。华为提供两种方式供开发者选择:云函数和开发者服务器,开发者可根据实际业务需要进行选择。
云函数
开发者需要先按照云函数接口规范开发函数,然后在AGC云端创建函数,并可测试函数运行是否正常。流程如下:

云函数接口规范
| 预加载类型 | API名称 | 说明 | 参数 | 返回值 |
|---|---|---|---|---|
| 安装预加载 | 自定义 | 获取预加载数据接口 | event.body.appId:应用ID,获取方法请参见查看应用信息。 | 自定义JSON字符串 |
| 周期性预加载 | 自定义 | 获取预加载数据接口 | - event.body.appId:应用ID,获取方法请参见查看应用信息。 - event.body.token:可选,注册周期性预加载任务时开发者自行传入的用户级认证信息,长度不超过2048个字符。 - event.body.params:可选,注册周期性预加载任务时开发者自行传入的自定义参数,长度不超过1024个字符。 | 自定义JSON字符串 |
| 跳链安装预加载 | 自定义 | 获取预加载数据接口 | - event.body.appId:应用ID,获取方法请参见查看应用信息。 - event.body.link:可选,跳链安装预加载延迟链接。 | 自定义JSON字符串 |
示例
端云一体化工程预加载云函数示例如下。其中,axios依赖库为网络请求库,需要在“cloudfunctions/云函数名称/package.json”的“dependencies”中添加axios的1.7.7或以上版本依赖。
-
安装预加载
import axios from 'axios';let myHandler = async function (event, context, callback, logger) {logger.info("event:" + JSON.stringify(event));let env1 = context.env.env1; // 环境变量logger.info("env1: " + env1)try {let body = event.body ? JSON.parse(event.body) : event;let appId = body.appId;logger.info("appId: " + appId);// http请求示例,请按照实际业务修改let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求urllet headers = { 'k1': 'v1' }; // 请求headerlet res; // 返回数据await axios.post(url, {}, { headers }) // http post请求.then(response => {res = response.data;})logger.info("--------Finished-------");callback(res);} catch (error) {logger.error("--------Error-------");logger.error("error: " + error);callback(error);}};export { myHandler }; -
周期性预加载
import axios from 'axios';let myHandler = async function (event, context, callback, logger) {logger.info("event:" + JSON.stringify(event));let env1 = context.env.env1; // 环境变量logger.info("env1: " + env1)try {let body = event.body ? JSON.parse(event.body) : event;let appId = body.appId;let token = body.token;let paramsStr = body.params; // 如果需要解析json结构paramsStr中的参数,需要使用 let params = JSON.parse(paramsStr);logger.info("appId: " + appId + ",token:" + token + ",params:" + paramsStr);// http请求示例,请按照实际业务修改let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求urllet headers = { 'k1': 'v1' }; // 请求headerlet res; // 返回数据await axios.post(url, {}, { headers }) // http post请求.then(response => {res = response.data;})logger.info("--------Finished-------");callback(res);} catch (error) {logger.error("--------Error-------");logger.error("error: " + error);callback(error);}};export { myHandler }; -
跳链安装预加载
import axios from 'axios';let myHandler = async function (event, context, callback, logger) {logger.info("event:" + JSON.stringify(event));let env1 = context.env.env1; // 环境变量logger.info("env1: " + env1)try {let body = event.body ? JSON.parse(event.body) : event;let appId = body.appId;let link = body.link; // 跳链安装预加载link信息logger.info("appId: " + appId + ",link:" + link);// http请求示例,请按照实际业务修改let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求urllet headers = { 'k1': 'v1' }; // 请求headerlet res; // 返回数据await axios.post(url, {}, { headers }) // http post请求.then(response => {res = response.data;})logger.info("--------Finished-------");callback(res);} catch (error) {logger.error("--------Error-------");logger.error("error: " + error);callback(error);}};export { myHandler };
开发者服务器
申请开通开发者服务器权限之后,开发者使用自己的服务器自行开发和实现预加载资源接口,接口需遵循开发者服务器接口规范。
开发者服务器接口规范
| 预加载类型 | API/PATH名称 | 说明 | 参数 | 请求方式 | 返回值 |
|---|---|---|---|---|---|
| 安装预加载 | 自定义 | 获取预加载数据接口 | appId:应用ID,获取方法请参见查看应用信息。 | GET | 自定义JSON字符串 |
| 周期性预加载 | 自定义 | 获取预加载数据接口 | - appId:应用ID,获取方法请参见查看应用信息。 - token:可选,注册周期性预加载任务时开发者自行传入的用户级认证信息,长度不超过2048个字符。 - params:可选,注册周期性预加载任务时开发者自行传入的自定义参数,长度不超过1024个字符。 | GET | 自定义JSON字符串 |
| 跳链安装预加载 | 自定义 | 获取预加载数据接口 | - appId:应用ID,获取方法请参见查看应用信息。 - link:可选,跳链安装预加载延迟链接。 | GET | 自定义JSON字符串 |
示例
定义名称为prefetchData的接口,示例如下:
https://www.example.com/prefetchData?appId=1234&token=xxxx¶ms=yyyy