鸿蒙项目云捐助第十四讲云函数的初步使用
在开发项目的过程中,云端充分利用已成为一种驱势。云监控,云运维,云开发,云办公等等软件层出不穷,本地软件云端化也成为一种潮流。在这股大潮中,华为云也是独树一帜的存在。在华为云的使用中,云函数是华为云使用的基础。
这里对华为云的使用就从云函数说开去。
一、云函数开发的准备
在项目中使用云函数,首先需要到华为应用市场中创建云端项目,然后开通云函数,才可以进行使用。这里首先登陆华为应用市场,也就是Appgallery Connnect,具体的地址可以通过百度搜索获取。如下图所示在百度中搜索Appgallery Connect。

从搜索结果中看,第一项就是AppGallery Connect的网站链接,直接点击进入AppGallery Connect的华为应用市场。
进入到华为应用市场AppGallery Connect网站首页的页面如下图所示。

这里进入页面后需要进行登录才可以使用,这里在页面的右端输入华为的登录帐号,如下图所示。

登录成功后就进入到了华为应用市场AppGallery Connect,如下图所示。

进入市场后,云端的项目从创建项目开始起步。这里点击“我的项目”。如下图所示。

进入“我的项目”后就可以看到“添加项目”的选项。如下图所示。

这里点击“添加项目”后会出现输入项目名称的页面,如下图所示。

这里输入项目名称后,需要点击“创建并继续”,如下图所示。

这里输入的是mytest_juan的项目,继续点击“创建并继续”会出现第二步的设置页面,如下图所示。

对于这个页面,我们直接点击继续,进入到第三步的页面设置中,如下图所示。

在这个页面中,需要点击“设置”的选项,而且这个选项是必须要点击的,其前面有一个红色星号的标注,表示必须进行配置,这里点击点击“设置”后出现的界面如下图所示。

在这个对话框中需要表现爱国情怀,在中国的大地上选择“中国”,并且把“中国”设为默认,然后“确定”后就会回到原来点击“设置”的页面中。如下图所示。

在这个页面中我们选择“开通”即可完成华为云应用市场的新建项目配置。页面也来到项目信息显示的页面中。如下图所示。

“创建项目”结束后需要“添加应用”,这里在项目信息显示页面找到“添加应用”的按钮,如下图所示。

这里点击“添加应用”后出现的配置界面如下图所示。

在出现的界面中选择APP(HarmonyOS),也是鸿蒙编辑器DevEco创建的应用,选择此项后,会出现“前往证书、APP ID和Profile的APP ID页面创建并添加应用至本项目”的提示。这里点击下图中唯一有链接的“APP ID”提示。

点击链接后进入到输入相关添加应用内容的界面,如下图所示。

在这个页面中输入创建应用的名称和应用的包名,注意这里的应用包名的标志是唯一的,如果有相同的出现会出现报错的提示。在应用分类中选择“应用”。这里填写的信息如下图所示。

这里输入的应用名称为myjuanproject,应用的包名为com.myoneexample.myproject,在后面使用DevEco Studio工具进行应用创建时也需要这里输入的相关信息。输入信息结束后点击“下一步”后出现如下图所示的界面。

### 在这个界面中使用默认,直接“确认”进入到下一个页面,在这个页面把需要开通的服务开通,确认后就来到了创建应用的显示页面,如下图所示。

在显示应用的左侧还有一部分内容,这部分内容在DevEco Studio编辑器上也可以自动进行配置。如下图所示的相关内容。

云应用创建完成后,点击左上角的AppGallery Connect的图标,回到项目的首页。如下图所示。

由于在项目中需要使用云函数,这里进入项目当中后,把左侧的“云函数”这一项进行开通。如下图所示。

点击“立即开通”后,云函数的页面会发生变化,如下图所示。

开通云函数后,这里在DevEco Studio编辑器中进行项目开发,首先通过菜单的“File”--->“New”--->“Create Project”进行项目创建。
如下图所示。

点击后会弹出对话框,在弹出的对话框中选择“Cloud Dev”,具体操作如下图所示。

选项“Cloud Dev”模板后,点击“Next”进入下一步的界面中。如下图所示。

在这个界面中与AppGallery Connect的云应用平台中的添加应用配置进行对比时的一些注意事项,在点击“Next”进入下一步的界面中的Bundle name值一定要与添加应用时的包名是一致的,这里如果不一致就不能创建端云一体化的项目。包括创建的项目名称也要与AppGallery Connect华为应用市场中创建的项目名称是一致的,如下图所示。

接下来继续点击“Next”进入下一步,如下图所示的界面。

在这个界面中需要点击“Sign In”进行华为帐号的登录,当登录成功后才会显示图中的用户及创建的应用名称。这样点击“Finish”结束就可以创建成功一个端云一体化的项目。项目界面如下图所示。

在产生的端去一体化项目中,最外层有两个文件夹,一个是Application文件夹,一个是CloudParam文件夹。如下图所示。

这里的Application表示开发端云一体化项目的前端,这里的CloudParam表示开发端云一体化项目的后端。
接下来进行云函数的开发,在开发之前,首先需要从AppGalley Connnect华为云应用市场中下载服务文件,这个文件名称是agcconnect-service.json。这个文件在项目信息显示界面中,如下图所示。

这里点击agcconect-server.json的文件进行下载,下载后需要把文件拷贝到端云一体化项目myjuanproject的前端文件夹Application中entry目录下src目录中main目录下的rawfile文件夹内,如果没有这个文件夹,可以在项目中创建这个rawfile文件夹。如下图所示。

云端下载的文件准备好后,需要当前开发的端云一体化项目必须能够连接Internet网,因为客户端需要与华为云进行数据的交互,这里检查项目中module.json5模块文件,查看该文件是是否存在Internet的权限,这里需要在requestPermissions条目项中设置name的属性,其值为ohos.permission.INTERNET。如下图所示。

这里设置了这个权限,项目就可以进行INTERNET的请求,也就有了Internet的申请权限。
接下来端云一体化的开发还需要依赖的支持,这里在项目中的oh-package.json5的包依赖文件中添加包的依赖关系,如下图所示。

这里在包的依赖中添加了华为云操作的支持包@hw-agcconnect/cloud,也添加云端的认证包@hw-agcconect/auth-component。添加相关的包文件后,需要点击文件右上角的“Syn Now”进行同步。如下图所示。

这里点击“Syn Now”后在状态栏会显示同步的进度条,如下图所示。

同步结束后,需要处理entryability文件夹下的EntryAbility文件,在这个文件的onCreate方法中需要调用实例化方法initialize,代码如下图所示。

这里将之前下载的云端agcconnect-server.json文件通过initialize方法进行初始化,如果失败则打印错误日志。
完成这些准备工作,就可以进行云函数的开发了。
二、云函数的开发
开发云函数需要在端云一体化文件夹CloudParams后端项目文件夹中的cloudfunctions云函数文件夹进行下手。如下图所示。

在这个文件夹下,原来有一个云函数id-generator,这里并不删除该云函数,保留下来,继续创建一个自己的云函数。
在cloudfunctions的文件夹上右键选择“New”--->“Cloud Function”进行云函数的创建。操作如下图所示。

在弹出的对话框中输入云函数名称,这样就创建成功一个云函数,如下图所示。

这里创建的是test的测试云函数,云函数创建成功后,在编辑器右侧有对应的代码,如下图所示。

这里在原有代码基础上加入了“测试数据”的显示。云函数实现后,通过在cloud functions中右键选择“Run Cloud Function”进行云函数的编译执行。

如果在执行过程中没有任何报错,表示云函数的代码没有任何问题,这个云函数也是可以执行的。 run执行正确的控制台输出如下图所示。

需要注意的是,运行过程中,有一个云函数报错,就需要把这个错误改正后才可以运行。云函数运行是否正确,可以通过DevEco Studio编辑器右侧的请求框去验证云函数执行是否正确。如下图所示。

这里点击“Cloud Function Request”请求框,出现如下图所示的界面。

在这个出现的请求框中输入云函数的名称test,也就是自己创建的云函数名称,接下来点击下面按钮中的“Trigger”触发器按钮触发这个云函数。触发后执行结果如下图所示。

这里通过结果看到有“测试数据”的显示,表示云函数执行结果正常。
目前的云函数是本地的,我们需要把本地的云函数上传到云端,这样就实现端云一体化之华为云函数的调用了。在a后台项目目录“cloudfunctions”中右键,选择“Depoly cloudfunctions”功能即可完成云函数的华为云远端部署。如下图所示。

点击“Depoly cloudfunctions”进行部署后,注意底部状态栏的显示,当底部状态栏显示“Depoly success ful”表示部署成功。如下图所示。

部署成功后,在华为去AppGallery Connect的云函数选项就会显示出部署的两个云函数,如下图所示。

下面进行云函数的开发,在前端Application文件夹的pages目录中建立一个测试云函数的页面组件,如下图所示。

这里我们创建了一个MyComponent组件,在这个组件中定义一个按钮,在按钮中异步await调用云函数,这样await方法对应的onClick事件需要有async异步进行修饰。代码如图所示。

在代码中通过cloud.callFunction来调用云函数,云函数的名称是test,这里必须指明云函数的版本是$latest表示最近的版本。这里的cloud是来自于@hw-agcconnect/cloud包的cloud模块。
这里运行这个云函数需要启动模拟器,模拟器启动后界面如下。

这里需要修改EntryAbility的项目启动后显示的初始界面,修改代码如下图所示。

还要注意新建的页面不能进行显示,需要在main_pages中进行文件名称的说明,如下图所示。

这里修改文件后需要同步一下文件,然后需要注意启动项目时启动的是entry,并不是cloudfunction,如下图所示。

这里运行项目时设置成entry入口,才可以运行项目调试云函数,如下图所示。

运行后,在Log日志标签中可以看到object对象的输出。如下图所示。

这里修改输出的代码,让其输出为JSON格式。如下图所示。

运行后,点击“调用云函数”在Log日志中输出如下图所示的结果。

这个正是我们调用的云函数,这样华为云Gallery Connect应用市场的云函数就调用成功了。
后面持续完成华为云的相关功能页面,请持续关注。