Vapor服务器和配套iOS应用程序示例

时间:2017-12-08 15:28:33

标签: vapor

swift服务器端的支持者使用swift的原因之一是它允许iOS开发人员为他们的应用程序开发后端。但是,我没有看到很多这种使用模式的例子。

有一个chat-ios示例,但是使用的是websockets。

是否有可用的服务器和配套iOS应用示例?

使用自定义服务器的一个难点是处理iOS应用程序中可能存在的糟糕通信。我想看看那里的任何项目是否已经处理好了。

使用parse / firebase的原因之一是内置客户端支持同步/重试。是否存在可用于为自定义后端提供此可靠性的客户端应用程序的任何资源/框架。

2 个答案:

答案 0 :(得分:2)

official list of Vapor projects包含几个iOS /服务器项目对。

这可能是该列表中最好的例子。

服务器:https://github.com/cocoaheadsru/server

客户:https://github.com/cocoaheadsru/application

答案 1 :(得分:2)

一段时间以来,我一直在为iOS / macOS客户端和Vapor后端开发使用Swift软件包。我正在将汲取的经验教训收集到一组通用的开放源代码存储库中:VaporExampleLabs/Synergy*

有可能会在Swift服务器端,iOS设备和macOS应用程序中使用的Swift软件包。视图(Vapor View,iOS UIView,macOS NSView)与底层应用程序逻辑之间的更大分隔允许在平台之间的Swift Packages中共享更多代码。

VaporExampleLabs/Synergy*软件包和项目的集合提供了有关如何设置Vapor服务器,iOS设备客户端和macOS客户端以使用同一Swift软件包的各种方法。

每个部分重点介绍了在服务器后端和客户端设备软件开发中共享使用Swift代码的一些关键发现。

主要观察结果:

  • 从视图中尽可能多地分离应用程序逻辑,以放置到Swift软件包中。
  • 考虑使用跨平台的Swift和/或C库。
  • Xcode有时需要额外的手动步骤,例如在构建阶段添加C头文件。
  • Swift软件包可以作为Xcode项目生成,用作iOS和macOS应用程序中的子项目。 Swift Package子项目可以作为一种变通办法,直到iOS / macOS / tvOS应用程序可以使用SPM生成为止。

注意:Synergy集项目和程序包仍在收集过程中正在进行中。目标是创建一个共享通用Swift软件包的完整(自包含)后端到客户端连接的示例集。


SynergySqliteC

有时,较低级别的库在服务器和设备之间并不常见。例如,数据库对象关系模型(ORM)对于Vapor是不同的,而iOS / macOS具有CoreData。蒸气提供流利。 iOS / macOS提供了CoreData。

此示例说明了在最低级别直接使用SQLite C源代码。

SynergySqliteC ⇗显示了如何将跨平台C库设置为Swift软件包。

纯C程序包可能需要将* .h文件手动添加到项目树中,以便在Xcode项目中进行构建。

SynergySQLiteFramework

SynergySQLiteFramework ⇗提供了一个通用 Swift框架,用于使用基于C的Swift软件包SynergySqliteC

SynergyAPI

SynergyAPI ⇗为收集Synergy应用程序提供了Codable接口。使用泛型SQLite软件包SynergySQLiteFramework

SynergyVapor

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

协同客户

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

iOS / macOS应用程序中的快速软件包

  

请注意,程序包管理器目前不支持iOS,watchOS或tvOS平台。 Source: Swift Package Manager Project

即使Swift软件包管理器不能直接创建iOS或macOS应用程序,Swift软件包仍可以用作相应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

资源