swiftui接入腾讯云对象存储cos

这篇具有很好参考价值的文章主要介绍了swiftui接入腾讯云对象存储cos。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​个人来说玩玩,还是用swiftui比较好,毕竟写界面的速度快很多,而且还比较直观。
有部分逻辑需要接入图片上传,因此接入了一下腾讯云对象存储cos。
官网上只有swift的教程,没有swiftui的。记录一下swiftui的接入过程。

首先引入pod集成项目。

pod 'QCloudCOSXML' 
# 据说是精简版,不过看起来好像也没有啥效果,头文件的引入好像根据文档来还是会报错的。
# 本例子只是简单的上传,因此用哪个都行。
# pod 'QCloudCOSXML/Transfer' 

引入头文件

import QCloudCOSXML
// 精简版用下边的这个好像会报错,找不到这个,用上边的没问题
// import QCloudCOSXMLTransfer 

初始化

一般来说swiftui的app部分是这样的。不过按照教程直接继承协议是不行的。

@main
struct DemoApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

首先新建一个 appdelegate

class AppDelegate: NSObject, UIApplicationDelegate, QCloudSignatureProvider {
    
}

然后在里边实现初始化及签名的回调。这两部分感觉不用写在appdelegate的finish launch里边,因为现在的应用一般还要来个隐私协议。暴露出一个方法来给swiftui调用,控制流程比较方便。最好粘贴代码,不要手敲,例如 QCloudAuthentationV5Creator 这个有个虚方法QCloudAuthentationCreator,稍不注意就失败了。
另外本例子用的是客户端直接同cos通讯方式,如果出现泄漏直接换secret也是可行的。

class AppDelegate: NSObject, UIApplicationDelegate, QCloudSignatureProvider {
    
    func signature(with fileds: QCloudSignatureFields!, request: QCloudBizHTTPRequest!, urlRequest urlRequst: NSMutableURLRequest!, compelete continueBlock: QCloudHTTPAuthentationContinueBlock!) {
        let credential = QCloudCredential.init()
        credential.secretID = "xxx" // 密钥ID
        credential.secretKey = "xxx" // 密钥secret
        let creator = QCloudAuthentationV5Creator.init(credential: credential)
        let signature = creator?.signature(forData: urlRequst)
        continueBlock(signature, nil)
    }
    
    func initQCloud() {
        let config = QCloudServiceConfiguration.init()
        let endpoint = QCloudCOSXMLEndPoint.init()
        endpoint.regionName = "ap-beijing" // bucket region
        endpoint.useHTTPS = true
        config.endpoint = endpoint
        config.signatureProvider = self
        QCloudCOSXMLService.registerDefaultCOSXML(with: config)
        QCloudCOSTransferMangerService.registerDefaultCOSTransferManger(
            with: config)
    }
}

把appdelegate加入到swiftui的app中。

struct DemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear {
                    delegate.initQCloud()
                }
        }
    }
}

初始化到此完毕。
初始化完整代码:

import SwiftUI
import QCloudCOSXML

class AppDelegate: NSObject, UIApplicationDelegate, QCloudSignatureProvider {
    
    func signature(with fileds: QCloudSignatureFields!, request: QCloudBizHTTPRequest!, urlRequest urlRequst: NSMutableURLRequest!, compelete continueBlock: QCloudHTTPAuthentationContinueBlock!) {
        let credential = QCloudCredential.init()
        credential.secretID = "xxx" // 密钥ID
        credential.secretKey = "xxx" // 密钥secret
        let creator = QCloudAuthentationV5Creator.init(credential: credential)
        let signature = creator?.signature(forData: urlRequst)
        continueBlock(signature, nil)
    }
    
    func initQCloud() {
        let config = QCloudServiceConfiguration.init()
        let endpoint = QCloudCOSXMLEndPoint.init()
        endpoint.regionName = "ap-beijing" // bucket region
        endpoint.useHTTPS = true
        config.endpoint = endpoint
        config.signatureProvider = self
        QCloudCOSXMLService.registerDefaultCOSXML(with: config)
        QCloudCOSTransferMangerService.registerDefaultCOSTransferManger(
            with: config)
    }
}

struct DemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear {
                    delegate.initQCloud()
                }
        }
    }
}

上传部分

简单上传部分

import QCloudCOSXML

func updatePic(img: UIImage) {
    let picPath = "temp/\(Day(date: date).format(format: "yyyy-MM-dd"))/\(UUID().uuidString).png"
    
    let put = QCloudCOSXMLUploadObjectRequest<AnyObject>()
    put.bucket = "xxx" // bucket id
    put.object = picPath // 上传路径
    put.body = img.pngData() as AnyObject
    put.setFinish { res, err in
        print("upload obj finish \(res) \(err)")
    }
    QCloudCOSTransferMangerService.defaultCOSTransferManager().uploadObject(put)
}

到此cos接入完毕。文章来源地址https://www.toymoban.com/news/detail-541367.html

到了这里,关于swiftui接入腾讯云对象存储cos的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【golang】go获取腾讯云cos对象存储 并转为base64字符串输出

    需要引入腾讯云cos的sdk https://github.com/tencentyun/cos-go-sdk-v5 配置yaml如下: go代码编写如下:

    2024年02月11日
    浏览(35)
  • 腾讯云国际-如何使用对象存储COS在 CKafka 控制台创建数据异步拉取任务?腾讯云代充

    Datahub 支持接入各种数据源产生的不同类型的数据,统一管理,再分发给下游的离线/在线处理平台,构建清晰的数据通道。 本文以 COS 数据为例介绍如何在 CKafka 控制台创建数据异步拉取任务,并对任务进行修改配置,帮助用户更好地了解数据接入功能。 关联unirech注册腾讯云

    2024年02月08日
    浏览(45)
  • 腾讯云COS的快速接入

    最近在研究一个剪贴板粘贴工具,实现粘贴图片,返回可访问的地址,这个在我的哔哩哔哩上有出一期视频🤭。但是,我发现部分博客平台不能正常的转载我的图片链接,于是研究了一下腾讯云的COS(阿里的叫OSS,最开始我还不知道腾讯云的叫COS🥹),想着其它平台应该可

    2024年02月13日
    浏览(26)
  • 腾讯云COS存储是什么_腾讯云COS有什么用?

    由于这是给新手写的东西,就尽量整得简单易懂些吧。 作为国内第二大的云服务厂商,安全性,可靠性这些东西就不用过多做介绍了(这里并非说他绝对安全,而是比那些小平台的安全性高N个级别) 腾讯云COS与隔壁阿里云的OSS都是提供对象存储的服务,(即文件存储)。比

    2024年02月11日
    浏览(26)
  • 腾讯云存储COS

    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种

    2024年02月12日
    浏览(38)
  • [php-cos]ThinkPHP项目集成腾讯云储存对象COS

    Cos技术文档 1、安装phpSdk 通过composer的方式安装。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: =2.0 将composer.lock删除,然后运行composer install 就安装成功了。 查看vendor中的是否存在qcloudcos-sdk-v5,安装包中有使用的例子:sample文件夹中。 2、添加配置文件 3、编写cos工具类 测试: pos

    2024年02月15日
    浏览(41)
  • springboot集成COS对象存储

    新建密钥(后面配置要用到) 此处使用工具类进行基本属性配置,也可选择在yml中配置

    2024年01月22日
    浏览(48)
  • 使用uni-file-picker上传文件(图片)到腾讯云存储COS步骤

    微信小程序上传文件到腾讯云存储COS: 准备步骤: 1.拿到腾讯云的API密钥:在API密钥管理中获取SecretId和SecretKey,没有的话生成一个 2.开通COS存储创建存储桶,需要拿到存储桶名字和所在地域 3.打开对象存储的产品文档进入SDK文档里的小程序SDK里面有源码下载地址 主要是为了

    2024年02月07日
    浏览(31)
  • 什么是对象存储COS?它又有哪些优势?

    对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成本、可靠和安全的数据存储服务。 COS 通过控制台、API、SDK 和工具等多样化方式简单、快速地接入

    2024年01月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包