Saturn 1.1.0

Saturn 1.1.0

测试测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017 年 3 月
SwiftSwift 版本3.0
SPM支持 SPM

iaagg 维护。



Saturn 1.1.0

  • Aleksey Getman

Saturn

enter image description here

示例

要运行示例项目,克隆仓库,然后从 Example 目录运行pod install

要求

ios 8.0 +

安装

Saturn 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:

pod "Saturn"

描述

Saturn 是一个库,旨在在用户设备上设定的时间之外提供获取可靠日期和时间的机会。

设置

要激活 Saturn - 在 AppDelegate 中的 applicationDidFinishLaunchingWithOptions 方法中调用以下方法。在此之后,您将能够要求 Saturn 为您计算可靠的日期和时间。如果要将 Saturn 与您自己的服务器时间同步,请将 true 传递给 ownServerProvided 参数。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Saturn.protect(ownServerProvided: false)

return true
}

强烈建议在应用程序将要终止之前保存所需的时间信息

func applicationWillTerminate(_ application: UIApplication) {
Saturn.performSavingOfTimeData()
}


查看示例项目以了解使用 Saturn 的概念。您可以通过更改设备上的时间(或模拟器上的 Mac)来尝试 Saturn 的功能。


从 Saturn 获取日期

Saturn 是为了在更改设备上的日期和时间时计算正确的日期和时间而构建的。如果使用 protect 方法激活 Saturn,您可以通过调用以下方法来始终要求它计算可靠的日期和时间:

Saturn.date { (date, craftResult) in
print(date)
print(craftResult)
}

在提供的闭包中,您将收到 Saturn 生成的时间和生成结果。生成结果具有枚举类型,您可以在代码中遵循以下文档。主要思想是结果可以具有 3 个不同的值,这告诉您是否可以依靠生成的日期。

  1. 类型 CraftedDateIsReliable 表示您可以依靠生成的日期并在应用程序中使用它
  2. 类型 CraftedDateIsUnreliable 表示自定义日期在大多数情况下是正确的,但有时可能不正确。例如,如果用户将执行与更改设备时间和关闭互联网连接相关的多次设备重启,则自定义日期可能不正确。它将在下一次同步成功后立即变得可靠。
  3. 类型 CraftingReliableDateIsImpossible 表示尚未与远程服务器同步,因此无法创建日期和时间。因此,土星仅返回用户设备上设置的日期。

同步

A. 与远程服务器同步

为了正常工作,Saturn 需要定期与远程服务器的时戳(timeInterval)同步。

如果需要,Saturn 将默认与服务器同步,您不应考虑它。但是!如果您已通知 Saturn 在“保护”方法中将其与您自己的服务器同步,则应通过以下方法自行执行同步

Saturn.syncWith(serverTime: yourServerTimeStamp)

在每次应用程序会话期间只需执行一次成功同步就足够了。

无论如何,您总是可以通过调用以下方法让 Saturn 尝试在后台使用默认服务器执行同步

Saturn.tryToMakeNewSyncPoint()

B. 定期保存设备的时间信息

为了提高可靠性并检测设备重启,Saturn 需要定期保存一些设备信息。所有数据都存储在 NSUserDefaults 中。默认情况下,Saturn 每 2.5 分钟执行一次定期保存。您可以通过以下方法更改此循环,设置自己的保存周期

Saturn.relaunchAutoSavingProcess(withInterval: yourTimeIntervalInSeconds)

作者

Aleksey Getman, [email protected]

许可

Saturn 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。