react-native-firebase-无头JS服务中的打开应用程序/后台模式下收到的通知中的打开应用程序

时间:2019-03-18 09:05:13

标签: react-native react-native-android react-native-firebase

我读过

但这不是react-native-firebase的解决方案。

我正在使用react-native-firebase处理通知。在前台,一切正常。我陷入了背景状态。

我正在研究一个聊天项目并进行一对一通话功能。当客户有电话时,我会将数据通知推送给客户。在iOS中,当客户端收到通知时,我使用CallKit,并且运行良好。但是在Android中,我有一个问题: 我可以显示ConnectionService UI进行呼叫,但无法连接到我的Web套接字服务器,因为它在Headless JS服务上运行。因此,我尝试自动打开该应用程序。我想将通话屏幕显示为Skype,并接受/拒绝通话。 (有电话时,Skype可以启动该应用程序)

成功的步骤摘要:

  • 在前台状态下接收呼叫通知并显示呼叫屏幕。
  • 在后台/关闭状态下接收呼叫通知,并在iOS上显示呼叫屏幕。
  • 在Android上以后台/关闭状态接收呼叫通知。

卡在这里:

  • 在后台显示呼叫屏幕/在Android上关闭???

TL; DR-如何从Headless JS Service启动/运行/打开Android应用程序?

我深入研究react-native-firebase,它在onMessageReceived上捕获了通知,并将通知消息发送到Headless JS Service。

// If the app is in the background we send it to the Headless JS Service Intent headlessIntent = new Intent( this.getApplicationContext(), RNFirebaseBackgroundMessagingService.class ); headlessIntent.putExtra("message", message); this .getApplicationContext() .startService(headlessIntent); HeadlessJsTaskService.acquireWakeLockNow(this.getApplicationContext());

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

此库有助于从后台状态打开应用。 React Native Launch Application

如果您的应用从后台状态退出

您必须像这样在index.js中注册registerHeadlessTask

AppRegistry.registerHeadlessTask(
'ReactNativeFirebaseMessagingHeadlessTask',
  () => notificationActionHandler,
);

并在notificationActionHandler函数中调用库函数来打开应用

如果您的应用程序处于后台运行状态,则可以订阅

messaging().setBackgroundMessageHandler(remoteMessage => {
      console.log('setBackgroundMessageHandler', remoteMessage.data);
    })