鸿蒙端云一体化开发--调用云函数--适合小白体制

如何实现在端侧调用云函数?

观看前,友情提示:

 不知道《如何一键创建端云一体化模板》的小白同学,请看:

鸿蒙端云一体化开发--开发云函数--适合小白体制-CSDN博客

实现方法:

第一步:添加依赖

        如果你用的不是《端云一体化模板》进行创建项目的,你就要自行在端侧的 oh-package.json5 中添加依赖:

"dependencies": {"@hw-agconnect/cloud": "^1.0.0","@hw-agconnect/hmcore": "^1.0.0","@hw-agconnect/auth-component": "^1.0.0","long": "5.2.1"}

注:oh-package.json5文件是在端测ArkTS开发中entry模块下的,它就是管理端侧依赖的。

如果你使用的是《端云一体化模板》进行创建项目的,则系统创建自带依赖:

第二步:初始化AGConnect

        初始化AGConnect,它是我们接下来调用云函数、使用云数据库、使用云存储的一个前提,简单来说,你只要使用到云侧的功能就必须先做一件事就是初始化AGConnect。当然,如果你用的是《端云一体化》模板生成好的,那么初始化AGConnect代码就已经生成好了。

初始化AGConnect相关代码介绍:

第一:引入initialize函数

import { initialize } from '@hw-agconnect/hmcore';

第二:调用initialize函数

initialize(this.context, JSON.parse(json));的解析:

this.context:传递的是端侧UIAbility的上下文对象 

JSON.parse(json)是从云侧agconnect-services.json文件中传递进来的,所以上三行代码就是为了解析agconnect-services.json文件的配置文件信息,而agconnect-services.json文件存放位置一般是:

1. AppScope/resources/rawfile/agconnect-services.json

2. entry/resources/rawfile/agconnect-servicesn.jso

案例:

那这个agconnect-services.json文件它里面放了些什么东西呢?

答:存放的是我们云侧应用的一些相关配置信息。

我们可以转向看看AGC控制台:

如果你不是使用《端云一体化》模板创建应用的,可在AGC控制台上可以手动下载agconnect-services.json文件。但是请注意:

请下载最新的配置文件(如果您修改了项目、应用信息或者更改了某个开发服务设置,可能需要更新该文件)

而agconnect-services.json文件是相应应用的配置文件,有了配置文件,端侧那边才知道怎么根据这个配置文件去连接云侧,去执行云侧的相关功能。

如果你使用的是《端云一体化》模板创建应用的,它已经自动帮我们下载好并且存储在DevEco Studio开发软件内项目工程相应位置上。

如果你项目和应用做了更改,请记得重新下载最新的agconnect-services.json文件,将其copy覆盖原文件。

补充内容(可选看)

在initialize函数中,它是怎么去读取这个agconnect-services.json配置文件的呢?

答:

但是上述代码操作感觉很繁琐,所以有没有更简介的方法?

答:有的,教你一招:

我们可以用import语句,来引入这个agconnect-services.json文件,而且引入的结果就直接会拿到最终我们需要的JSON对象:

第一步:利用import语句进行导入:

修改之前的代码:

再补充一点:

我们initialize函数不仅仅可以在onWindowStageCreate这个方法内调用,根据官网文档,initialize函数也可以放在onCreate里面来调用:

如果你不是使用端云一体化模板添加:

操作如下:

下载 agconnect-services.json 文件(由端云一体化模板下载)

存放位置一般是

AppScope/resources/rawfile/agconnect-services.json

entry/resources/rawfile/agconnect-services.json

初始化代码一般放在 EntryAbility

import { initialize } from '@hw-agconnect/hmcore';
// @ts-ignore
import json from '../../resources/rawfile/agconnect-services.json'export default class EntryAbility extends UIAbility {onCreate() {try {initialize(this.context, json);} catch (e) {hilog.error(0x0000, 'AGConnectError', JSON.stringify(e))}// ...
}
}

第三步:ArkTS 界面开发

第一步创建一个page页面:

在这里我们只想做一个按钮,点击按钮即可触发云函数:

创建MyIndex页面:

注意:别忘记修改项目启动,跳转到首先是我们的MyIndex页面:

第四步:调用云函数

对按钮添加onClick()事件,并且调用一个叫cloud对象来调用云函数:

  • name 是云函数名
  • version 是云函数版本,$latest 即为最新版本
  • params 是输入参数,注意会封装在 event.body 中,且需要自己 JSON.parse

而cloud对象来自于我们之前的项目依赖:

那么要接收云函数返回的结果,要什么来接收呢?

首先了解一下cloud的callFunction函数的返回类型:

因为是Promise封装的,所以我们要awit异步调用:

进行测试:

注意:调用云函数不是使用预览器实现的,要在模拟器或者真机中进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/311334.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D视觉引导麻袋拆垛破包 | 某大型化工厂

客户需求 此项目为大型化工厂,客户现场每日有大量麻袋拆垛破包需求,麻袋软包由于自身易变形、码放垛型不规则、运输后松散等情况,无法依靠机器人示教位置完成拆垛。客户遂引入3D视觉进行自动化改造。 工作流程: 3D视觉对紧密贴合…

libcurl 简单使用

LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP、FTP、SMTP、POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等…

服务器数据恢复—V7000存储raid5数据恢复案例

服务器数据恢复环境: P740AIXSybaseV7000存储阵列柜,阵列柜上有12块SAS机械硬盘(包括1块热备盘)。 服务器故障: 管理员在日常巡检过程中发现阵列柜中有一块磁盘发生故障,于是更换磁盘并同步数据&#xff0…

HTTP协议安全传输教程

HTTP协议有多个版本,包括但不限于HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3。这些版本各自具有不同的特点和改进,以适应网络技术的发展和满足不同的需求。例如,HTTP/1.0使用文本格式传输数据,简单易用且兼容性好,…

电路笔记 : esp32pico-d4最小系统原理图

ESP32-PICO-D4 ESP32-PICO-D4是一款基于ESP32的系统级封装(SiP)模组,可提供完整的Wi-Fi和蓝牙功能。该模组的外观尺寸仅(7.0000.100)mm(7.0000.100)mm(0.9400.100)mm,整体占用的PCB面积最小,已集成1个4MB串行外围设备接口(SPI) flash。 ESP3…

网络层协议——IP协议

目录 IP协议 IP协议格式 分片与组装 网段划分 特殊IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 路由表生成算法 IP协议 IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。 在应用层我…

外卖小程序实战-接单后小票机自动打印订单

1、导入小票机的sdk https://www.feieyun.com/api/API-JAVA.zip public static String addprinter(String snlist){//通过POST请求,发送打印信息到服务器RequestConfig requestConfig RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTi…

DePIN打猎之旅:AI算力作饵,道阻且长

出品|OKG Research 作者|Hedy Bi 香港Web3嘉年华已告一段落,然而Web3自由的脉搏还在跳动,并不断向其他行业渗透。和上一轮周期相比,本轮牛市开启的逻辑是由“原生创新叙事”转变成“主流认可,资金驱动”的…

C语言详解指针

目录 一、指针的概念 1.1内存与地址 例子: 二、变量的指针与指针变量 2.1、指针变量的定义及使用 1、指针变量的定义 2、指针变量的使用 2.2 指针变量的大小 2.3、指针-整数 2.4、void*指针 三、指针的运算 1、指针- 整数 2、指针-指针 3、指针的关系运…

一套3种风格经典的wordpress免费主题模板

wordpress免费企业主题 https://www.wpniu.com/themes/39.html 免费wordpress企业模板 https://www.wpniu.com/themes/43.html 免费wordpress企业主题 https://www.wpniu.com/themes/44.html

使用docker部署数据可视化平台Metabase

目前公司没有人力开发数据可视化看板,因此考虑自己搭建开源可视化平台MetaBase。在此记录下部署过程~ 一、镜像下载 docker pull metabase/metabase:latest 运行结果如下: 二、创建容器 docker run -dit --name matebase -p 3000:3000\ -v /home/loc…

Python编程之旅:深入探索强大的容器——列表

在Python编程的世界中,容器(Containers)是一种用于存储多个项目的数据结构。其中,列表(List)是最常用且功能强大的容器之一。无论是初学者还是资深开发者,掌握列表的使用方法和技巧都是提升Pyth…

四.吊打面试官系列-数据库优化-Mysql锁和事务原理

前言 本篇文章主要讲解两块内容:Mysql中的锁和ACID原理,这2个部分是面试的时候被问的蛮多的看完本篇文章之后相信你对Mysql事务会有更深层次的理解,如果文章对你有所帮助请记得好评 一.Mysql中的锁 1.锁的分类 在Mysql中锁也分为很多种&a…

揭秘AI精准输出:如何构建完美的AIGC提示词?

揭秘AI精准输出:如何构建完美的AIGC提示词?🤖 文章目录 揭秘AI精准输出:如何构建完美的AIGC提示词?🤖摘要引言正文📘 提示词的基本概念1. 什么是提示词?2. 提示词的作用 &#x1f4d…

Redis安装和使用(Ubuntu系统)

本节内容包括Redis简介、安装Redis和Redis实例演示等,Redis在Window系统安装教程可参考Redis安装与运行_厦大数据库实验室博客 Redis是一个键值(key-value)存储系统,即键值对非关系型数据库。Redis提供了Python、Ruby、Erlang、P…

【面试八股总结】排序算法(二)

参考资料 :阿秀 一、堆排序 堆排序基本思想是先把数组构造成一个大顶堆(父亲节点大于其子节点),然后把堆顶(数组最大值,数组第一个元素)和数组最后一个元素交换,这样就把最大值放到了数组最后边。把数组长度n-1,再进行构造堆把剩…

开源AI聊天机器人应用程序模板; WrenAI用AI从数据中获取洞见;模拟多个代理人(agents)之间语言互动的仿真系统;语音数据集标注

✨ 1: gemini-chatbot 使用Next.js构建的开源AI聊天机器人应用程序模板 Gemini-chatbot是一个使用Next.js构建的开源AI聊天机器人应用程序模板。它利用了Vercel AI SDK、Google Gemini以及Vercel KV来提供一个功能丰富、可定制的聊天体验。这个聊天机器人可以支持多种不同的A…

GitHub repository - commits - branches - releases - contributors

GitHub repository - commits - branches - releases - contributors 1. commits2. branches3. releases4. contributorsReferences 1. commits 在这里可以查看当前分支的提交历史。左侧的数字表示提交数。 2. branches 可以查看仓库的分支列表。左侧的数字表示当前拥有的分…

我们试用了6款最佳Appium替代工具,有些甚至比Appium更好

Appium是一款知名的自动化测试工具,用于在iOS、Android和Windows等移动平台上运行测试。就开源移动测试自动化工具而言,虽然替代品有限,但它们确实存在。我们找到了一些优秀的Appium替代品,它们也可以满足自动化测试要求&#xff…

Jenkins上面使用pnpm打包

问题 前端也想用Jenkins的CI/CD工作流。 步骤 Jenkins安装NodeJS插件 安装完成,记得重启Jenkins。 全局配置nodejs Jenksinfile pipeline {agent anytools {nodejs "18.15.0"}stages {stage(Check tool version) {steps {sh node -vnpm -vnpm config…