【问题标题】:Can I prevent iOS closing email compose window, losing user data我可以防止 iOS 关闭电子邮件撰写窗口,丢失用户数据吗
【发布时间】:2018-02-12 07:50:27
【问题描述】:

我有一个群组电子邮件应用程序,客户可以在其中在标准 iOS 撰写窗口中创建电子邮件。如果他们写了一封长电子邮件,然后切换应用程序来执行内存密集型任务,iOS 可能会关闭撰写窗口,从而丢失他们的电子邮件内容。

有没有办法防止窗口被关闭?还是一种确保 iOS 在关闭电子邮件之前将其保存到草稿的方法?

我想知道我是否没有保留我应该保留的链接?

其他人可以确认他们是否看到同样的问题吗?

【问题讨论】:

    标签: ios email memory


    【解决方案1】:

    最好的方法是了解App Life Cycle on iOS

    当应用程序在后台运行时,applicationWillTerminate 方法将被调用,这是您保存电子邮件内容的选项之一。但是这个方法并不是每次都调用,它只会在你的应用没有挂起或者用户重启设备的时候调用。

    一种解决方案是将这些数据保存在方法applicationDidEnterBackground 中,一旦您的应用开始在后台运行,就会调用它。并重新加载application:didFinishLaunchingWithOptions 中的数据,这允许您在应用显示给用户之前执行任何最终初始化。

    【讨论】:

    • 当我进入后台时,我确实保存了属于我的应用程序的数据,例如电子邮件地址组。但是我相信开发人员无法访问 iOS 电子邮件撰写窗口的内容(可能是出于隐私原因),所以我无法保存它,因为我不知道它包含什么。有没有我不知道的访问或保存数据的方法?
    • 我找不到获取此数据的方法,但我认为您是对的,出于隐私原因,开发人员无法访问此数据。如果这些数据可用,我相信它应该在 mailComposeController(_:didFinishWith:error:) 方法中
    【解决方案2】:

    有没有办法防止窗口被关闭?还是一种确保 iOS 在关闭电子邮件之前将其保存到草稿的方法?

    您无法阻止窗口关闭,因为 iOS 正在杀死应用程序。您可以做的是在此之前的某个时间保存电子邮件。由于用户显然无法在应用程序处于后台时修改电子邮件,因此在应用程序进入后台时保存消息将是一个不错的选择。这样,如果 iOS 确实终止了应用程序,您将保存数据,并且您可以检查应用程序启动时是否有需要恢复的已保存消息。

    但是,如果您采用这种方法,您还必须想办法帮助用户返回他们保存的消息,这意味着您还需要首先跟踪他们是如何到达那里的所以你可以重新创建那个状态。如果它只是一条简单的消息,也许您需要做的就是打开一个消息编辑器视图并使用保存的消息进行设置。不过,总的来说,这可能是一个棘手的问题。幸运的是,Apple 提供了一个很好的解决方案...

    iOS 视图控制器编程指南 有一个名为 Preserving and Restoring State 的部分,它解释了如何设置应用程序以自动保存和恢复其状态。通过相对较少的工作,您可以设置您的应用程序,以便用户甚至不会注意到应用程序已重新启动——如果他们在 iOS 杀死它后启动它,应用程序将重新创建视图控制器,使其看起来就像应用程序一直在运行一样,即使设备在此期间被关闭。

    【讨论】:

    • 我不相信开发人员可以访问电子邮件撰写窗口的内容,因此当应用程序移动到后台时我无法保存它(就像我对用户的组数据所做的那样,因为实例)
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 2017-02-04
    • 2016-05-02
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多