蒸汽服务器和配套的iOS应用示例

5
有一个支持Swift服务器端的理由是它允许iOS开发人员为他们的应用程序开发后端,但我并没有看到很多这种使用模式的示例。
有一个聊天应用chat-ios 的示例,但那只是使用Websockets。
是否有可用的服务端和相应的iOS应用程序示例呢?
使用自定义服务器的难点之一是处理iOS应用程序使用可能不良的通信。我想看看是否有任何项目能够处理得很好。
使用Parse/Firebase的一个原因是它内置了客户端支持同步/重试。是否有任何客户端应用程序资源/框架可以用于为自定义后端提供这种可靠性呢?
2个回答

5
我已经使用Swift Packages开发iOS/macOS客户端和Vapor后端一段时间了。我正在将所学的教训整理成一组通用的开源代码库:VaporExampleLabs/Synergy*
可以使用Swift Packages在Swift服务器端、iOS设备和macOS应用程序上运行。在视图(Vapor View,iOS UIView,macOS NSView)和底层应用逻辑之间实现更大的分离,可以让更多的Swift Packages在各平台之间共享代码。 VaporExampleLabs/Synergy*集合提供了各种工作片段,说明如何设置一个Vapor服务器、iOS设备客户端和macOS客户端使用相同的Swift Packages。
每个部分都强调了使用Swift代码在服务器后端和客户端设备软件开发中的一些关键发现。
主要观察点:
- 尽可能将应用逻辑与视图分离,放置到Swift Packages中。 - 考虑使用跨平台的Swift和/或C库。 - Xcode有时需要额外的手动步骤,例如在构建阶段添加C头文件。 - Swift Packages可以生成为Xcode项目,作为iOS和macOS应用程序中的子项目使用。Swift Package子项目可作为解决方法,直到iOS/macOS/tvOS应用程序可以使用SPM构建为止。
注意:Synergy项目和Packages集合仍然是一个正在进行中的工作,目标是创建一个完整(自包含)的后端到客户端连接示例集,共享通用的Swift Packages。
SynergySqliteC 有时候低级别的库在服务器和设备之间不常见。例如,数据库对象关系模型(ORM)对于Vapor和iOS/macOS来说是不同的。Vapor提供Fluent,而iOS/macOS则提供CoreData。
此示例演示了直接使用最底层的SQLite C源代码。 SynergySqliteC ⇗展示了如何将跨平台的C库设置为Swift Package。
纯C包可能需要手动将*.h文件添加到项目树中以在Xcode项目中进行构建。 SynergySQLiteFramework SynergySQLiteFramework ⇗提供了一个通用的Swift框架,用于使用基于C的Swift Package SynergySqliteCSynergyAPI

SynergyAPI ⇗ 提供了用于 Synergy 应用程序集合的 Codable 接口。它使用泛型 SQLite 包 SynergySQLiteFramework

SynergyVapor

SynergyVapor ⇗ 提供了一个使用 SynergyAPI 的示例 Vapor web 应用程序。

Synergy Clients

Synergy ⇗ 提供了 iOS 和 macOS 客户端 Xcode 项目。iOS 和 macOS 客户端都使用 SynergyAPI 包。

iOS/macOS 应用程序中的 Swift 包

Swift Package Manager 项目在2019.06.03之前说明:

请注意,目前软件包管理器不支持 iOS、watchOS 或 tvOS 平台。

在2019.06.03,Swift Package Manager 项目已更新,指出 Xcode 11 中存在一些 SPM 支持。

Xcode 11 集成了 libSwiftPM,以提供对 iOS、watchOS 和 tvOS 平台的支持。

尽管 Swift Package Manager 无法直接 创建 iOS 或 macOS 应用程序,但 Swift Packages 仍可用作相应 Xcode 应用程序项目中的子项目。

cd SynergyAPI

swift package generate-xcodeproj \
    --xcconfig-overrides Package.iOS.xcconfig \
    --output SynergyAPI_iOS

swift package generate-xcodeproj \
    --xcconfig-overrides Package.macOS.xcconfig \
    --output SynergyAPI_macOS

SubprojectSynergyAPI

资源


2

“Vapor 项目官方列表” PROJECTS.md 已于2018年2月20日从GitHub上移除。最后一次更新的时间似乎是在2017年9月9日(链接) - l --marc l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接