# CoremailSDK-iOS **Repository Path**: coremail/coremailsdk-ios ## Basic Information - **Project Name**: CoremailSDK-iOS - **Description**: CoremailSDK-iOS集成体验Demo - **Primary Language**: Swift - **License**: MPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-05 - **Last Updated**: 2025-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CoremailSDK 使用指南 CoremailSDK 具有邮件、日程、通讯录、网盘等功能,支持自定义配置 UI。最低支持 iOS 13 以上系统。适配 Pad 特有的界面效果。 ## 组件 * MailService:Coremail 的逻辑模块,以 xcframework 包提供,具有邮件、日程、通讯录、网盘等功能,依赖 [Cache](https://github.com/antwork/Cache.git) 库和 LKToolKit 库。 * MailUI:Coremail 的UI展示模块,以 xcframework 包提供,展示 MailService 的功能,依赖 LKToolKit 和 HtmlParser 库。 * LKToolKit:工具库,为 MailService 和 MailUI 提供通用的工具方法。 * HtmlParser:工具库,为 MailUI 提供 html 的解析和处理。 demo 中为了能展示功能使用账号密码登录,加入了 AccountKit 库,实际使用中如果不用到,忽略此库。 demo 中内置了授权文件 MailServiceKey.txt,正式使用需提供 bundleid 到 hyzheng@coremail.cn 申请新的授权文件。 ## 配置 1. 将 MailService、MailUI、LKToolKit 和 HtmlParser 加入到项目中,放在同一路径下,选中`Target - Frameworks, Libraries, and Embedded Content`,找到这4个库,在`Embed`处选择`Embed & Sign` 2. 添加第三方依赖库 [Cache](https://github.com/antwork/Cache.git) > pod 方式添加: > pod 'Cache', :git=>'https://github.com/antwork/Cache.git' > > SPM (Swift Package Manager) 方式添加: > .package(url: "https://github.com/antwork/Cache.git", from: "5.0.0"), 3. 权限配置 > 访问相机权限:NSCameraUsageDescription / Privacy - Camera Usage Description > 保存相册权限:NSPhotoLibraryAddUsageDescription / Privacy - Photo Library Additions Usage Description > 访问相册权限:NSPhotoLibraryUsageDescription / Privacy - Photo Library Usage Description ## 使用 ### MailService MailService 的核心类是`MSUserHP`和`Client`,`MSUserHP`负责管理用户身份和配置,`Client`负责管理请求。 ``` import MailService var userHP:MSUserHP = MSUserHP() userHP.delegate = self // 配置 MSUserHelperDelegate 协议 userHP.db = MSDatabase(email: user.username) // 根据协议配置数据库功能 userHP.socket = MSSocket() // 根据协议配置Socket功能 userHP.loginedAccount = user.msaccount // MSLoginedAccount userHP.mailClient = Client(accountHP: self.userHP) // 获取用户签名档 userHP?.mailClient?.getSignatures(extras: nil, completion: {[weak self] (result:Result, Error>) in switch result { case .success(let listmodel): // listmodel.items case .failure(let error): // error } }) ``` MSUserHP 中的配置 * loginedAccount,提供用户的必要登录信息(服务器地址、email、cookie 和 token 等) * delegate,负责用户状态管理、过期重登等 * socket、db,提供数据库功能和socket功能,不配置则没有此功能,不需要可不配置 ### MailUI MailUI 的功能都需要传入参数`userHP` ``` import MailUI let controller = MailListController(nibName: "MailListController", bundle: Bundle.MUIBundle) // 获取邮件列表界面 controller.userHP = userHP controller.sourceType = .folders(nil, [folder]) navigationController?.pushViewController(controller, animated: true) ``` 大部分功能UI由路由服务(Route)提供,建议采用路由提供的服务,便于获取和自定义跳转。例如获取选择联系人的界面 ``` do { let param = ContactRouteParameter.contactSelection(selecteds: [], forbidden: [], maxCount: Int.max, filter: nil, response: {[weak self] selecteds in // 处理已选中的联系人 }) let selections = try Route.ContactService.contactSelections(userHP: userHP, params: [param]) self?.navigationController?.hideBottomBarPush(viewController: selections, animated: true) } catch { print(error) } ``` 目前 Route 提供邮件界面服务: 服务 | 服务协议 | 提供实现 --- | --- | --- 邮件UI服务 | MailUIService | MailModuleService 联系人UI服务 | ContactService | ContactModuleService 日程UI服务 | ScheduleService | ScheduleModuleService 预览UI服务 | PreviewService | PreviewModuleService 网盘UI服务 | NetfolderService | NetFolderModuleService ## 自定义 ### 主题定制 MUITheme 类提供主题定制,通过设置值实现自己想要的主题。如主色配置为白色 ``` MUITheme.C01_1 = .white ``` ### 开关控制 FuncControl 类提供开关控制,通过设置值,控制功能入口开关。此开关配置如果与服务端配置冲突,优先级会高于服务端配置。如禁止写信中的群发单显功能 ``` FuncControl.showOneRcpt = false ``` ### 界面自定义 MailUI 内的界面之间跳转,都是由 Route 控制,如果部分界面要自定义处理,可以通过实现对应的服务协议,并注册到路由。例如联系人详情界面要自定义处理,通过实现`ContactService`协议,再注册到 Route。如要使用自定义的联系人详情界面 ``` struct MyContactModuleService: ContactService { static func contacts(userHP: MailService.MSUserHP, params: RouteParameter) throws -> UIViewController { // 其他方法如果不需要自定义处理,可以直接调用已有的ContactModuleService类来处理 return try ContactModuleService.contacts(userHP: userHP, params: params) } static func contactSelections(userHP: MailService.MSUserHP, params: [RouteParameter]) throws -> UIViewController { ... } static func contactDetail(userHP: MailService.MSUserHP, email: String) throws -> UIViewController { // 自定义实现 } static func groupUpdate(userHP: MailService.MSUserHP, params: [RouteParameter]) throws -> UIViewController { ... } } // 注册到路由 Route.register(MyContactModuleService.self) ```