当应用程序在后台时,我可以在AppDelegate中访问应用程序变量吗?

问题描述 投票:0回答:1

我正在使用本机iOS的聊天应用程序。在后台模式下收到新通知时,我想在主应用程序图标中显示徽章计数。现在,我可以在主应用程序图标中显示徽章计数。但这会增加每个通知的计数。我想基于聊天限制。为此,我需要具有新消息的聊天ID。当应用程序在后台运行时,能否在Appdelegate.m的didReceiveRemoteNotification方法中访问应用程序变量?

ios objective-c react-native-ios appdelegate
1个回答
1
投票

只要您的代码正在运行,您就可以访问几乎所有内容,但是有一些限制。

这里的问题是您认为什么是“应用程序变量”。这些对象很可能是已经存在于您的内存中的对象,可以通过didReceiveRemoteNotification或任何其他方法进行访问而没有任何问题。

当它们不在您的记忆中时,可能会发生一些限制,但并非一定无法克服。在某些情况下可能会或可能不会有问题:

  • 如果文件由您的操作系统加密,则从磁盘读取
  • 资源位于远程服务器上,您需要通过Internet进行通信
  • 您的数据在GPU上或需要处理GPU

如果您的didReceiveRemoteNotification已经被调用,那么您应该几乎没有问题。但是通知不一定会触发此方法。通知的有效负载应该已经包含徽章计数,并且您的操作系统应该能够正确显示徽章,而不仅仅是始终为其添加值。

应用程序可能不仅仅在后台。它可能会被暂停甚至终止。您的应用程序可能会从通知中唤醒,在这种情况下,您不能期望调用didReceiveRemoteNotification。即使是这样,您也无法期望以前的呼叫在您的记忆中仍然有任何信息;由于您的应用程序刚刚重新启动,因此上次运行的内存已不存在。

© www.soinside.com 2019 - 2024. All rights reserved.