我正在制作闹钟应用。有两件事在模拟器上有效,但在我的设备上没有。
1)根据this网站,如果UIApplicationExitsOnSuspend设置为“YES”,则应用程序应始终运行,即使设备已被锁定(前提是它位于前台)。我使用此信息确保即使设备已锁定,NSTimer也会运行。在模拟器上,无论经过多长时间(甚至超过10个小时),NSTimer始终工作,声音总是激发(即使我锁定模拟器屏幕)。当我将我的iPhone设备连接到计算机并通过xcode运行应用程序时,它也可以正常工作。但问题是,只要我断开手机并加载保存的应用程序,有时NSTimer会正常工作,有时却不会。
2)本地通知:在模拟器上,本地通知工作正常,但在iPhone设备上,通知会随机触发,有时甚至不会触发。但是在模拟器上,本地通知会准确地触发。我以不同的方式进行了测试(比如在应用程序加载后将本地通知设置为20秒,然后退出应用程序以进入后台模式)但是它在指定的时间内没有触发,就像我说的有时甚至不会触发
在这种情况下,我应该信任模拟器还是iPhone设备?这可能是一个错误,还是我做错了什么?
答案 0 :(得分:2)
始终信任该设备。毕竟,这就是最终用户将如何运行您的应用程序!
众所周知,您不应该相信模拟器的背景行为。 NSTimer问题就是一个很好的例子。问题是模拟器是您的计算机,而不是iOS设备。定时器实际上并不在后台运行;模拟器会误导你。 (如果从Xcode运行到独立运行,应用程序在设备上的行为不同的问题有点令人惊讶,但在这种情况下,我认为并非所有 令人惊讶;你是非常聪明地考虑两种方式的测试。)
当然还有很多的iOS功能根本无法在模拟器上运行。
答案 1 :(得分:0)
我找到了#2的问题。我只是取消了之前的通知,然后才开始新的通知。
我仍面临第一个问题。