Swift 不使用internet的IOS应用程序的时间保护算法

Swift 不使用internet的IOS应用程序的时间保护算法,swift,time,protection,Swift,Time,Protection,我需要一些关于这个问题的想法。我制作了一个具有登录和注销功能的应用程序。我需要寻找一个解决方案,当人们注销系统,他们必须允许新用户只有在两个小时后 我可以用互联网来做这件事。它是如此的基本。我可以花一个小时注销,当用户尝试登录时,我可以在互联网上查看时间,但我不想使用此解决方案,因为不能保证每个设备都有互联网 我可以从手机上取下离线时钟。但是,在这段时间内,用户可以更改时间并快速通过保护 对这个解决方案有什么想法吗?如何在IOS和swift中解决此问题?如果您的应用程序处于前台/挂起状态,您可以

我需要一些关于这个问题的想法。我制作了一个具有登录和注销功能的应用程序。我需要寻找一个解决方案,当人们注销系统,他们必须允许新用户只有在两个小时后

我可以用互联网来做这件事。它是如此的基本。我可以花一个小时注销,当用户尝试登录时,我可以在互联网上查看时间,但我不想使用此解决方案,因为不能保证每个设备都有互联网

我可以从手机上取下离线时钟。但是,在这段时间内,用户可以更改时间并快速通过保护

对这个解决方案有什么想法吗?如何在IOS和swift中解决此问题?

如果您的应用程序处于前台/挂起状态,您可以收听UIApplicationsSignificantTimeChangeNotification。但如果你的应用程序被终止,你将不会收到此通知

因此,确保用户在接下来的2小时内不会登录的最佳方法是依赖用户无法更改的真实来源,即您的后端

  • 存储用户注销的时间
  • 询问后端每次发布的当前时间
  • 将其和用户再次尝试登录时的注销时间进行比较

  • 您的登录是否进行服务器调用?是的,但它可以脱机工作。事实上,我正在使用firebase。在后台模式下,应用程序在现实生活中只工作3分钟,而且,这不是个好主意。我试图找到定位的时间,例如,伦敦或伊斯坦布尔等,但我了解到,用户可以手动重新安排伦敦的时间在IOS用户可以快速通过您的保护与变化的时间。“存储用户注销的时间。在每次启动时询问您的后端的当前时间。将其和用户尝试再次登录时的注销时间进行比较。”若您所依赖的只是服务器时间戳,那个么用户将无法执行此操作。您也可以在注销之前获取服务器的时间戳。整个想法是让服务器成为真相的来源。如果这是一个关键用例。当我在internet上使用我的应用程序时,您是对的,但我的应用程序也可以脱机工作。在这种情况下,没有任何internet连接,无法访问服务器数据。请认为用户已注销,并在两小时后更改时间。很快,可以再次登录,登录后,再把时间补回来。