Tag: 状态恢复

状态恢复只有在连接到Xcode时才起作用

我有一个运行计时器的应用程序,即使应用程序退出或closures手机,计时器仍应继续运行。 所以我试图做到这一点,使用shouldSaveApplicationState和shouldRestoreApplicationState 。 我添加了方法和willFinishLaunchingWithOptions到我的willFinishLaunchingWithOptions ,并为每个视图控制器,导航控制器和标签栏控制器设置了恢复ID。 然后在视图控制器上,我想恢复我做到了这一点: override func encodeRestorableStateWithCoder(coder: NSCoder) { coder.encodeObject(startDate, forKey: "startDate") coder.encodeObject(startTime, forKey: "startTime") coder.encodeObject(elapsedTime, forKey: "elapsedTime") coder.encodeObject(playing, forKey: "playing") coder.encodeObject(timerLabel.text, forKey: "timerLabelText") super.encodeRestorableStateWithCoder(coder) } override func decodeRestorableStateWithCoder(coder: NSCoder) { startDate = coder.decodeObjectForKey("startDate") as! NSDate startTime = coder.decodeObjectForKey("startTime") as! NSTimeInterval elapsedTime = coder.decodeObjectForKey("elapsedTime") as! NSTimeInterval playing = coder.decodeObjectForKey("playing") as! Bool timerLabel.text = […]

神秘的警告没有任何谷歌的结果

我在iOS项目中得到了这个警告:(iOS7,XCode 5 GM) 警告:无法创build恢复正在进行的标记文件 我正在开发一个视图控制器,当我得到这个警告启动时变黑。 删除应用程序并重新启动XCode有时似乎有所帮助。 我两个都没有返回 -(BOOL)application:(UIApplication *)application shouldRestoreApplicationState: -(BOOL)application:(UIApplication *)application shouldSaveApplicationState: Update1:​​我在iPhone4上testing。 同样的结果。 警告和我的视图控制器上的黑屏。 Update2:回答我自己的黑屏问题。 这个警告在最新的iOS 7.0.x版本中消失了。

为什么我的应用程序在还原时不能返回到我的详细信息视图?

我的应用程序有一个简单的组织,我已经在界面生成器故事板(不是在代码中)configuration。 有一个导航视图控制器,其根视图控制器设置为我的主视图控制器。 我的主视图包含一个表格,其中单元格继续到Detail View Controller。 当我在查看详细视图的同时暂停应用程序,然后恢复它时,我返回到主视图,而不是详细视图。 为什么会这样? 细节: 我在界面生成器中为导航视图控制器,主视图控制器和细节视图控制器设置了恢复ID。 我也尝试添加一个恢复ID到表视图,并使主视图控制器实现UIDataSourceModelAssociation。 我的应用程序从shouldRestoreApplicationState返回YES,Main View和Detail View都有encode / decodeRestorableStateWithCoder方法。 我使用模拟器testing暂停/恢复:我运行应用程序,导航到详细信息视图,点击主页button,然后单击XCode中的停止button。 恢复,我从XCode再次运行应用程序。 我看到下面的电话暂停: AppDelegate shouldSaveApplicationState MainViewController encodeRestorableStateWithCoder DetailViewController encodeRestorableStateWithCoder 简历中: AppDelegate shouldRestoreApplicationState AppDelegate viewControllerWithRestorationIdentifierPath Navigation AppDelegate viewControllerWithRestorationIdentifierPath Navigation/MainView MainViewController viewDidLoad AppDelegate viewControllerWithRestorationIdentifierPath Navigation/DetailView MainViewController decodeRestorableStateWithCoder 除了正在恢复的错误视图之外,还有一些奇怪的东西:为什么细节视图“Navigation / DetailView”的恢复标识符path而不是“Navigation / MainView / DetailView”? 导航视图控制器和详细视图控制器之间没有直接的关系。 它们在Interface Builder中的唯一连接是通过主视图中的segue。 我有错误的configuration吗? 我曾尝试将恢复类分配给详细视图。 当该恢复代码被调用时,由于未在编码器中设置UIStateRestorationViewControllerStoryboardKey而失败。 这是我的项目的一个玩具版本,它复制了这个问题: https […]

如何触发核心蓝牙状态保存和恢复

状态保存和恢复由于状态保存和恢复是内置于蓝牙核心,您的应用程序可以select使用此function,要求系统保存您的应用程序的中央和外围pipe理人员的状态,并继续执行某些与蓝牙有关的任务即使您的应用程序不再运行,也是如此。 当这些任务中的一个完成时,系统会将您的应用程序重新启动到后台,并为您的应用程序提供恢复其状态并适当处理事件的机会。 在上述家庭安全应用的情况下,系统将监控连接请求,并且当用户返回家庭并且连接请求完成时,重新启动应用以处理centralManager:didConnectPeripheral:委托callback。 我怎样才能触发这个testing代码? 我有一个服务配件。 我有一个应用程序,扫描服务,我select了保存状态。 但我不知道如何进行逻辑testing,因为我不知道我需要触发它。 这些是我尝试失败的选项: A – kill the app from Xcode B – kill the app manually C – power off the phone D – something else 在所有这些选项中,我尝试去Xcode – >设备 ,看看日志,但没有看到任何状态恢复日志。 谢谢

核心蓝牙状态保持和恢复不工作,无法重新启动应用程序到后台

我试图让核心蓝牙唤醒应用程序,即使它没有运行。 正如苹果指出的那样,“由于状态保存和恢复是内置在蓝牙芯片中的,因此您的应用可以select使用此function来要求系统保留您应用的中央和外围pipe理员的状态,并继续执行某些与蓝牙相关的任务即使你的应用程序不再运行,当这些任务中的一个完成时,系统将把你的应用程序重新启动到后台,让你的应用程序有机会恢复它的状态并适当地处理事件。 我添加了以下代码来join此function: myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIdentifierKey: @"myCentralManagerIdentifier" }]; 但是,应用程序醒来时的callback从未触发过。 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { } -(void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state { } 这两个从来没有被称为。 我正在testing这个唤醒function的方式: 我在info.plist中添加了背景模式下的“bluetooth central”,所以BLE在后台运行。 在我的iphone 1号启动centralManager。 开始扫描。 按回家,出门,玩一些记忆沉重的游戏,在debugging日志中,我会看到:“由于内存压力终止,处理完成退出代码0”。 这是为了模拟由于内存压力,ios系统如何终止后台应用程序。 用另一个iphone 2号启动一个灯塔并开始播放。 结果:那些重新启动callback从未被调用。 任何想法,为什么这是行不通的? 如果是API问题,当您的手机靠近BLE信标时,是否有其他方法可以将您的应用程序重新启动为BLE后台? 我已经尝试使用ibeacon来唤醒应用程序,但核心蓝牙中央pipe理器不会允许您在后台连接ibeacon。 谢谢!