当来自锁屏 iPhone 时在 didreceivelocalnotification 上重绘 GUI

Posted

技术标签:

【中文标题】当来自锁屏 iPhone 时在 didreceivelocalnotification 上重绘 GUI【英文标题】:redraw GUI on didreceivelocalnotification when come from lock screen iphone 【发布时间】:2011-04-23 18:33:00 【问题描述】:

如何防止我的 GUI 在收到 UILocalNotification 后从锁定屏幕返回时重绘?在 didReceiveLocalNotification 我展示了一个模态视图,但我的视图控制器的旧状态在此之前显示了一会儿。如何防止这种情况发生?

当我从后台返回本地通知时,我得到的事件顺序如下:

1. UIApplicationWillEnterForegroundNotification
2. UIApplicationDidBecomeActiveNotification
3. didReceiveLocalNotification

当我从锁屏界面回来时:

1. didReceiveLocalNotification
2. UIApplicationDidBecomeActiveNotification

为什么会有这种差异以及我是否还缺少其他东西?

谢谢

【问题讨论】:

【参考方案1】:

解决方法如下。可能不是这样,但它对我有用。由于我的应用程序是 voip/audio,它不会出现在 didFinishLaunchingWithOptions... 我发现,当 ios 从背景或睡眠模式恢复时,它使用来自先前状态的缓存图像进行动画。所以解决方案基本上是用我的 default.png 图像交换这个缓存的图像。我在applicationWillResignActive 代表中进行。在那里我添加了一个带有Default.png 图片的模态视图,并在applicationDidBecomeActive 中将其关闭。这真的很简短。希望它能帮助其他有同样问题的人。

【讨论】:

【参考方案2】:

您可以提供从本地通知启动/恢复时显示的自定义图像。只需将本地通知上的 alertLaunchImage 属性设置为正确图像的名称即可。

来自文档:

字符串是应用程序包中图像文件的文件名。此图像是为给定通知指定的启动图像;当用户点击操作按钮(例如,“查看”)或移动操作滑块时,将使用该图像代替默认的启动图像。如果此属性的值为 nil(默认值),则系统要么使用上一个快照,要么使用应用程序 Info.plist 文件中由 UILaunchImageFile 键标识的图像,或者回退到 Default.png。

alertLaunchImage

【讨论】:

我使用@"Default.png",但似乎它被忽略了。它以某种方式显示以前的视图(或重绘它们)。我真的不知道如何抓住它。

以上是关于当来自锁屏 iPhone 时在 didreceivelocalnotification 上重绘 GUI的主要内容,如果未能解决你的问题,请参考以下文章

锁屏 iPhone

IOS锁屏通知

锁屏 iPhone 上的音乐控制

UIAlertController 中的 UIPickerView 仅在 iPhone 中正确时在 iPad 中给出错误?

以秒显示 iPhone 锁屏(自己使用)

iOS14 专享功能,iPhone 充电锁屏时钟