当应用程序在后台时,React Native JS 不执行

Posted

技术标签:

【中文标题】当应用程序在后台时,React Native JS 不执行【英文标题】:React Native JS doesn't execute while app is in background 【发布时间】:2016-01-07 03:15:29 【问题描述】:

我正在尝试让推送通知在 ios React Native 应用程序中工作,并且已经完成了一半。我遇到的一个问题是,我在应用程序处于后台时显示通知的逻辑在应用程序再次激活之前不会执行。我正在使用 Socket.io 并监听事件,但要处理的代码(比如 onChat 事件)在应用程序处于活动状态之前不会运行。我已经验证了套接字仍然是连接的。

奇怪的一件事是它在模拟器中有效,但在我的设备上无效。也许有一些性能优化会在应用程序置于后台时停止 JS 执行。

如何让我的 JS 在 appstate 处于后台时执行?

当事件通过套接字接收并运行时,我正在做的是调用一个函数:

PushNotificationIOS.presentLocalNotification(
  alertBody: `New Chat: $chat.message`,
);

【问题讨论】:

【参考方案1】:

感谢this stack overflow question and answers 我能够发现代码没有在后台状态下执行以准备暂停状态。后台模式是准备应用程序“屏幕截图”的过渡状态。之后,套接字将仅在短时间内保持连接,但最终会终止。

在进行推送通知的情况下,我需要将其交给 Parse 或其他一些服务,以便在应用处于后台时向我的应用推送通知。

另见http://zeroheroblog.com/ios/what-to-do-when-your-iphone-app-moves-to-the-background

【讨论】:

以上是关于当应用程序在后台时,React Native JS 不执行的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序在后台时,使用 React Native 的静默 iOS 推送通知

当通知到达并且应用程序在后台没有用户交互时,如何在 React Native 中执行操作?

当应用程序未使用或处于后台模式时,React Native 是不是有函数生命周期正在运行?

从后台打开 React Native 深层链接应用程序

React Native ios:应用程序在发送到后台时崩溃

使用 React native 从后台激活应用程序时如何显示 PIN 码屏幕?