简介在之前的场景开发实践中,我们使用了AppGalleryConnect(以下简称AGC)认证服务、云功能、短信服务等服务来实现功能用户注册通知。本次我们使用了AGC提供的云功能、云存储和AppLinking服务,实现了图片存储、在线编辑和分享功能,相关代码已经同步到Github。实现概述1、用户在客户端选择要上传的图片,调用云存储Android/iOS上传接口将图片上传至云存储。2、创建图片处理的云函数,选择云存储触发器,每当有新图片上传到云存储时,都会触发云函数处理缩略图。3、在云函数中,调用云存储Node.jsSDK的下载文件接口将图片下载到内存,通过特定的方法对图片进行处理,然后调用云存储Node.jsSDK中的上传接口将处理后的图片上传回云存储。4、终端侧通过云存储Android/iOSSDK将缩略图下载到云存储上后,通过AppLinking生成分享链接分享给好友。好友点击链接后可直接打开应用指定页面。设备端上传图片到云存储,请登录AppGalleryConnect官网,在控制台进行操作:1.开启云存储服务2.新建存储实例3.设置云存储安全策略4.在应用中Operations中设置云存储文件夹结构:1.使用云存储AndroidSDK中的getStorageReference方法创建一个云地址的引用,用于存储上传的文件:AGCStorageManagementstorageManagement=AGCStorageManagement.getInstance();StorageReferencereference=storageManagement.getStorageReference("images/demo.jpg");2.调用SDK中的上传接口将本地文件上传到存储实例:UploadTasktask=reference.putFile(newFile("path/images/test.jpg"));task.addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(@NonNullExceptionexception){}}).addOnSuccessListener(newOnSuccessListener(){@OverridepublicvoidonSuccess(UploadTask.UploadResultuploadResult){}});··云函数处理图片大小操作在你的应用:1.调用云存储Node.jsSDK指定要下载的实例和存储桶,并指定本地地址:conststorage=newStorageManagement();常量桶=存储。桶(“photo-7iawi”);constremoteFile=bucket.file(fileAddr);localAddr=“\ImageProcess\picture”;2.调用下载文件的方法:try{remoteFile.createReadStream().on('error',err=>{result={"message":"下载文件错误,"+err.message};callback(result);}).on('end',()=>{result={"message":"下载文件成功"};//callback(result);}).pipe(fs.createWriteStream(localFile));}catch(error){result={"message":"下载文件错误,"+error.message};回调(结果);}3。下载文件后,处理图片的分辨率。4.图片处理完成后,将新图片上传回云端存储。constoptions={destination:'thumbnail/'+fileName,onUploadProgress:(event)=>{}};bucket.upload(imageAddr,options).then(res=>{result={"message":"AllSuccess"};callback(result);}).catch(err=>{result={"message":"上传失败"};回调(结果);});云存储在AppGalleryConnect控制台触发云功能的运行:1.登录AppGalleryConnect,找到云功能并启用。2.新建函数,设置函数名称、部署信息等相关设置。3、在“代码文件”配置项,将处理图片大小的函数部署包上传到云端函数。4.创建云存储触发器,输入之前创建的存储实例名称,事件名称选择Complete(意思是图片上传成功后会触发云函数裁剪图片)。分享AppLinking链接,请登录AppGalleryConnect官网,在控制台进行操作:1.开启AppLinking服务。2.启用该服务后,在“链路前缀”选项卡中为整个网络创建一个唯一的链路前缀。3.配置应用程序签名的SHA256文件。具体配置方法请参考配置签名指纹证书。在您的应用中执行的操作:1.使用云存储接口获取对应图片的下载链接。privateStringdownloadUrl;privatevoidgetDownLoadUrl(){AGCStorageManagementstorageManagement=AGCStorageManagement.getInstance();StorageReferencereference=storageManagement.getStorageReference("images/demo.jpg");(newOnSuccessListener(){@OverridepublicvoidonSuccess(Uriuri){StringdownloadUrl=uri.toString();}});任务。addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(Exceptione){}});}2.将下载链接和对应的图片ID生成分享链接。privateStringshortLink;privatestaticfinalStringDOMAIN_URI_PREFIX="https://DomainUriPrefix.drcn.agconnect.link";privatestaticfinalStringSHARE_DEEP_LINK="share://photo.share.com";privatevoidcreateShareLinking(StringUserName,StringPhotoID,StringImageUrl){StringnewDeep_Link=SHARE_DEEP_LINK+"?PhotoID="+PhotoID;AppLinking.Builderbuilder=AppLinking.newBuilder().setUriPrefix(DOMAIN_URI_PREFIX).setDeepLink(Uri.parse(ImageUrl)).setAndroidLinkInfo(AppLinking.AndroidLinkInfo.newBuilder().setAndroidDeepLink(newDeep_Link).build()).setSocialCardInfo(AppLinking.SocialCardInfo.newBuilder().setTitle("这是一张漂亮的照片").setImageUrl(ImageUrl).setDescription(UserName+"分享照片给你").build()).setCampaignInfo(AppLinking.CampaignInfo.newBuilder().setName("UserSharePhoto").setSource("ShareInApp").setMedium("MediumExample").build());builder.buildShortAppLinking().addOnSuccessListener(shortAppLinking->{shortLink=shortAppLinking.getShortUrl().toString();}).addOnFailureListener(e->{});}3、在AndroidManifest中配置Intent-Filter,用于接收AppLinking链接并直接启动应用4.在应用启动页的OnCreate方法中,接收并处理AppLinking链接的方法是AGConnectAppLinking.getInstance().getAppLinking(LoginActivity.this).addOnSuccessListener(resolvedLinkData->{Log.i(TAG,"StartUpFromAppLinking");if(resolvedLinkData!=null){字符串deepLink=resolvedLinkData.getDeepLink().toString();//你从AppLinking启动的动作}}).addOnFailureListener(e->{Log.i(TAG,"NormalStartUp");//你的正常启动动作});测试功能您可以通过以下方式测试图片或视频是否正常正常分享:1.打开您的应用程序,随机拍摄一张照片并将其存储在您的手机中。2.上传图片后查看处理效果。3、进入图片详情界面,点击右上角的分享链接,查看是否生成链接并发送给好友。4、用好友账号登录app,查看并点击链接,测试分享图片页面是否能正常打开。更多参考,请下载Demo。参考文档:使用云存储上传图片:https://developer.huawei.com/...使用Applinking分享链接:https://developer.huawei.com/...创建云函数:https://开发商。huawei.com/...更多精彩内容请查看华为开发者官方论坛→https://developer.huawei.com/...