gpt4 book ai didi

ios - 应用程序到达前台后呈现模式的最佳方法

转载 作者:行者123 更新时间:2023-11-28 07:40:00 24 4
gpt4 key购买 nike

我的 iOS 应用程序中的用户有两种状态,登录和注销。我正在使用 firebase sdk 进行身份验证和实时数据库数据传输。

对于已登录的用户,如果某个警报的特定条件为真,我想呈现自定义的应用程序内警报模式。这些条件是日期驱动的,即用户将在特定日期收到特定警报,而其他日期则不会。这意味着条件不是由用户输入决定的。

当服务器返回满足某个警报的条件时,有不同的状态。这些是我能想到的:

  • 用户可以从身份验证的终止状态打开应用程序在应用程序初始化期间重新建立,即记录退出->登录。
  • 用户可以在后台状态下打开应用。
  • 用户可以在日期更改时在应用内。

我的问题是这里的最佳做法是什么?我正在考虑的三种方法(也许都不是最好的)是:

  1. 单例 - 有一个 AlertManager 单例来监听警报条件满足事件,然后单例导航 View Controller 树以找到当前的前台 View Controller 以呈现警报
  2. 协议(protocol) - 拥有一个被所有 View Controller 采用的协议(protocol)。不完全确定我将如何处理这个问题,因为我无法从协议(protocol)默认实现中覆盖 viewDidAppear 方法。由于这个原因不确定这种方法是否可行。
  3. 继承 - 拥有一个由所有自定义 View Controller 继承的 ViewController 基类。该基类在其 viewDidAppear 方法中处理警报检查。

要考虑的一个切线问题是,当我需要呈现警报 View Controller 时,我应该如何处理已经呈现的 View Controller 的情况?我不想打扰用户,所以我想在当前呈现的 View Controller 被关闭后将要呈现的警报排队。

最佳答案

你可以在AppDelegate.swift中使用这个函数

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool

你的案例的例子

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//Check if User logged in
if logged
{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController =
storyboard.instantiateViewController(withIdentifier: "yourLoggedinVC")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
} else {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController =
storyboard.instantiateViewController(withIdentifier: "yourLoggedOutVC")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()

关于ios - 应用程序到达前台后呈现模式的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52540992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com