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

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

观看前,友情提示:

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

鸿蒙端云一体化开发--开发云函数--适合小白体制-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异步调用:

进行测试:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

98%的企业与被入侵的第三方有关联,如何有效的防止入侵

技术供应链漏洞使威胁参与者能够以最小的努力扩展其运营,在导致第三方入侵的外部B2B关系中,75%涉及软件或其他技术产品和服务,其余25%的第三方违规涉及非技术产品或服务。 入侵通常需要几个月或更长的时间才能公之于众,受害者可能…

【Leetcode】string类刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接:…

C++:模板详解

模板详解 1.函数模板1.概念2.语法3.原理4.实例化1.隐式实例化2.显示实例化 5.匹配原则 2.类模板1.格式2.实例化 3.非类型模板参数注意点 4.特化1.概念2.函数模板特化1.前提2.语法说明3.示例 3.类模板特化1.全特化2.偏特化/半特化3.选择顺序 4.按需实例化 5.模板的分离编译1.分离…

开发一个农场小游戏需要多少钱

开发一个农场小游戏的费用因多个因素而异,包括但不限于游戏的规模、复杂性、功能需求、设计复杂度、开发团队的规模和经验,以及项目的时间周期等。因此,无法给出确切的费用数字。 具体来说,游戏的复杂程度和包含的功能特性数量会直…

巧用断点设置查找bug【debug】

默认设置的断点,当代码运行到断点处MCU就会被挂起,从而停在断点处。 但在某些情况下,如调试FCCU时,如果设置断点,MCU停下后将会导致 FCCU 配置WDG超时。或在调试类似电机控制类的应用时,不适当的断点会导 致…

镜舟科技荣获金科创新社 2024 年度金融数据智能解决方案奖

近日, 镜舟科技凭借领先的金融实时数仓构建智能经营解决方案,在“金科创新社第六届金融数据智能优秀解决方案评选”活动中,成功入选“数据治理与数据平台创新优秀解决方案”榜单。 金科创新社主办的“鑫智奖”评选活动,旨在展示…

详解IIC通信协议以及FPGA实现

一、IIC简介 IIC也称为I2C(Inter-Integrated Circuit)由飞利浦公司(现在的恩智浦半导体)开发,是一种用于短距离数字通信的串行,同步,半双工通信接口协议;传输在标准模式下可以达到10…

python:元组,字符串,切片

一、元组# 列表可以修改内容,元组可以不被修改 # 在程序内封装数据,不希望数据被篡改,所以使用元组 # 语法: 不限制类型 # 定于元组的字面量: (元素,元素,元素.....) # 定…

apipost、postman等工具上传图片测试flask、fastapi的文件api接口

参考:https://blog.csdn.net/qq_15821487/article/details/119354129 https://www.cnblogs.com/wyxjava/p/16076176.html 选择from-data,下拉选择file上传文件发送即可

线上真实案例之执行一段逻辑后报错Communications link failure

1.问题发现 在开发某个项目的一个定时任务计算经销商返利的功能时,有一个返利监测的调度,如果某一天返利计算调度失败了,需要重新计算,这个监测的调度就会重新计算某天的数据。 在UAT测试通过,发布生产后&#xff0c…

NVIDIA安装程序失败-Nsight Visual Studio Edition失败解决办法

博主是要升级cuda版本,那么在安装新版本之前需要卸载以前的版本。 博主一溜卸载下去,最后有这么个东西卸载不掉,Nsight Visual Studio Edition 不管是电脑系统卸载还是360卸载,都卸载不掉。 此时安装新的cuda也遇到了这个问题 由…

PLC存储器分类及西门子SIMATIC S7-1200存储器参数

存储器用来储存程序和数据,分为系统存储器和用户存储器。 系统存储器存放由PLC生产厂商编写好的系统程序,并固化在只读存储器(ROM)内,用户不能修改。用户存储器存放用户根据控制要求编写的应用程序。目前大多数PLC采用…

面试经典150题——从中序与后序遍历序列构造二叉树

1. 题目描述 2. 题目分析与解析 其实这个题目和昨天那个很相似,思考思路如下: 解决从中序(inorder)与后序(postorder)遍历序列构造二叉树的问题时,考虑到这两个遍历序列为我们提供了树结构中…

解决方案 SHUTDOWN_STATE xmlrpclib.py line: 794 ERROR: supervisor shutting down

Supervisor操作命令 重新加载 Supervisor 配置: sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl restart all这将重新读取 Supervisor 的配置文件,更新进程组,然后重启所有进程。 查看 Supervisor 日志&#xff1…

尺取法知识点讲解

一、固定长度的情况: 最小和(sum) 输入N个数的数列,所有相邻的M个数的和共有N-M1个,求其中的最小值。 输入格式 第1行,2个整数N,M,范围在[3…100000],N>M。 第2行,有N个正…

R语言入门:“Hellinger“转化和“normalize“转化(弦转化)的公式表示与R代码实现

1、写在前面 vegan包中的decostand()函数为群落生态学研究提供了一些流行的(和有效的)标准化方法。有关decostand()函数标准化的一些标准化方法可以看我的另一篇笔记:R语言入门:vegan包使用decostand()函数标准化方法 由于在网络上没有找到关于这两个转…

Redis-键值设计

Redis-键值设计 1.设置key的规范 遵循基本格式:【业务名称】:【数据名】:【id】 可读性强,在客户端的情况下使用:如果前缀相同会分目录层级长度不超过44字节 string数据结构的三种类型,在44字节之内是embstring 内存…

鸿蒙应用开发之Web组件3

前面学习了从网上加载网页的显示,本文将要学习加载本地的网页。比如很多显示的内容,可以制作网页的文件格式,然后直接使用它来显示,就可以减少界面的制作。另外,当手机没有网络的时候,如果想从网络上获取内容就会失败,这时候可以使用本地的网页内容来代替。这样不会导致…

Python的Logging模块高级用法-日志处理

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Python中的日志处理:Logging模块的高级用法 在Python应用程序中&#xff0…

lementui el-menu侧边栏占满高度且不超出视口

做了几次老是忘记,这次整理好逻辑做个笔记方便重复利用; 问题:elementui的侧边栏是占不满高度的;但是使用100vh又会超出视口高度不美观; 解决办法: 1.获取到侧边栏底部到视口顶部的距离 2.获取到视口的高…