Swift 中的 iOS 8 和 9:首次启动期间 [警告:无法创建正在进行的恢复标记文件]

Posted

技术标签:

【中文标题】Swift 中的 iOS 8 和 9:首次启动期间 [警告:无法创建正在进行的恢复标记文件]【英文标题】:iOS 8 & 9 in Swift: [Warning: Unable to create restoration in progress marker file] during first launch 【发布时间】:2016-03-20 07:25:01 【问题描述】:

ios 8 和 9 设备以及模拟器都会出现此警告消息:

[警告:无法创建正在恢复的标记文件]

它只在我第一次启动(首次安装)应用程序时显示一次。任何后续从 Xcode 启动此应用程序而不卸载它都不会显示此警告消息。

这对我的应用来说正常吗?这就是我对代码所做的:

AppDelegate.swift:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
        // Override point for customization after application launch.
        return true
    

    func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool 
        return true
    

    func application(application: UIApplication, shouldSaveApplicationState coder:NSCoder) -> Bool
        return true;
    

    func application(application: UIApplication, shouldRestoreApplicationState coder:NSCoder) -> Bool
        return true;
    

Restoration ID 纯粹在 Main.storyboard 中完成,因此 RestorationID 和 StoryboardID 相同。而且,只有顶层 View 具有与 StoryboardID 相同的 RestorationID。

在默认创建的选项卡式视图应用程序中,我将以下内容应用于我的两个控制器(将第二个控制器命名为“SecondView”)

StoryboardID and RestorationID are the same

Top View has the RestorationID same as the StoryboardID

同时,如果我简单地将以下函数设置为 false 会发生什么:

func application(application: UIApplication, shouldSaveApplicationState coder:NSCoder) -> Bool
        return true;
    

    func application(application: UIApplication, shouldRestoreApplicationState coder:NSCoder) -> Bool
        return true;
    

即使我的应用程序需要在锁定屏幕或后台长时间运行,它仍然可以工作吗?

【问题讨论】:

【参考方案1】:

仅供参考。这解决了我的问题:https://***.com/a/20157399/49748

如果这个警告仍然出现,你可以检查你是如何在 Xcode 中运行你的应用程序的。我在 Xcode 模拟器中运行我的应用程序,并且必须按照特定的顺序来触发状态保存。

在 Xcode 模拟器中启动应用程序

在 Xcode 模拟器中,单击“Home”按钮将应用程序置于后台。应该调用视图控制器的encodeRestorableStateWithCoder方法

回到Xcode,点击“stop”按钮终止模拟

在 Xcode 模拟器中,双击“主页”按钮,然后从应用切换器中删除该应用并

返回 Xcode,再次运行应用程序。

【讨论】:

以上是关于Swift 中的 iOS 8 和 9:首次启动期间 [警告:无法创建正在进行的恢复标记文件]的主要内容,如果未能解决你的问题,请参考以下文章

检测iOS应用程序的首次启动[重复]

iOS 8 和 Cordova:应用程序在首次启动时立即请求推送通知权限

带有 Swift 和 iOS 8 故事板的登录屏幕

如何检测 iOS App 是由特定用户(不是在特定设备上)首次启动的?

iOS首次启动问题

在使用应用程序期间失去可达性连接时弹出警报(IOS xcode swift)