React Native - 如何从推送通知打开路线

2024-01-12

我在用着react-navigation and react-native-push-notification。我怎样才能打开某个StackNavigator's屏幕输入onNotification打回来?应该在以下情况下工作:

  • 应用程序已关闭
  • 应用程序在前台
  • 应用程序在后台运行

我现在只需要它在 Android 中工作。

我尝试将回调函数传递给组件中的通知:

_handleClick() {
  PushNotification.localNotification({
    foreground: false
    userInteraction: false
    message: 'My Notification Message'
    onOpen: () => { this.props.navigation.navigate("OtherScreen") },
  })
}

并开火onOpen in PushNotification config:

onNotification: function(notification) {
   notification.onOpen()
}

但似乎函数无法传递给通知,除非值是一个被忽略的字符串,导致onOpen未定义。


好吧,看来我得发布我自己的解决方案了:)

// src/services/push-notification.js
const PushNotification = require('react-native-push-notification')

export function setupPushNotification(handleNotification) {
  PushNotification.configure({

      onNotification: function(notification) {
        handleNotification(notification)
      },

      popInitialNotification: true,
      requestPermissions: true,
  })

  return PushNotification
}


// Some notification-scheduling component
import {setupPushNotification} from "src/services/push-notification"

class SomeComponent extends PureComponent {

  componentDidMount() {
    this.pushNotification = setupPushNotification(this._handleNotificationOpen)
  }

  _handleNotificationOpen = () => {
    const {navigate} = this.props.navigation
    navigate("SomeOtherScreen")
  }

  _handlePress = () => {
    this.pushNotification.localNotificationSchedule({
      message: 'Some message',
      date: new Date(Date.now() + (10 * 1000)), // to schedule it in 10 secs in my case
    })

  }

  render() {
    // use _handlePress function somewhere to schedule notification
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 如何从推送通知打开路线 的相关文章

随机推荐

  • 针对动态变量的 If 语句[重复]

    这个问题在这里已经有答案了 我正在尝试做类似以下的事情 New Variable Name state name Value True if state name eq True Write Host Pass else Write Hos
  • css和xhtml中的每个元素和属性、属性是否有必要使用小写?

    4 2 元素和属性名称必须小写 XHTML 文档的所有 HTML 元素和属性名称必须使用小写 这种差异是必要的 因为 XML 区分大小写 例如 和 是不同的标签 来源 http www w3 org TR 2002 REC xhtml1 2
  • 多个 selectInput 值会产生意外的 dplyr (postgres) 行为

    我有一个可爱的闪亮应用程序 它接受 selectInput 值 查询 postgres 数据库 并输出一个图表 这是一个简单的界面 但由于 dplyr 数据库连接 很难在这里重现 今天我将第一个 selectInput 值更改为 multi
  • Laravel 表单请求数组验证自定义规则

    我想创建一个表单请求验证 但不知道如何操作 我有一个表格
  • 如何使用excel vba获取href属性

    我想检索的 href 属性 h3 html页面的标签 我能够获取innerText 但我不知道如何访问href属性 有几个 h3 文档中的标签 但目前我只需要第一个 剩下的我稍后再处理 这是我到目前为止得到的代码 Sub Scrap Dim
  • 尝试在java中执行命令时出错[重复]

    这个问题在这里已经有答案了 我正在尝试使用终端但从 java 运行 java 文件 意思是 我将使用 java 运行该命令 我正在尝试执行命令 cd Users apple Documents Documents workspace Use
  • Kivy外规则继承2

    作为后续问题 Kivy 外部规则固有 https stackoverflow com questions 31618565 kivy outside rule inherence Kivy 规则继承与 add widget https st
  • 我们如何配置闪亮的开源服务器来支持并发用户

    我有一个 R Shiny 应用程序 我想使用开源解决方案托管该应用程序以支持大约 50 个并发用户 我遇到了 RStudio 的闪亮服务器 它可以用来将闪亮的应用程序部署到网络上 我想使用shinyserver的开源版本 文档说我们可以使用
  • 权限拒绝:编写 com.sec.android.provider.badge.BadgeProvider

    我最近在使用 Android Nougat 的三星手机上运行我的应用程序时发生崩溃 我没有授予 com sec android provider badge BadgeProvider 的运行时权限 这导致了崩溃 我不知道如何授予此徽章提供
  • Printf - 读取位置访问冲突 - C++

    0xC0000005 读取位置 0xcccccccc 时发生访问冲突 printf 抛出此异常 我不知道为什么会发生这种情况 这些字符串变量中有值 我使用 printf 错误吗 帮助 请参阅开关盒 string header string
  • 使用 Tortoise-Hg 克隆在中间中止[命令返回代码 255]

    我在用乌龟汞 http tortoisehg bitbucket io download for 克隆一个叉子 from CodePlex http nearforums codeplex com SourceControl changes
  • 将 Kaggle csv 从下载网址导入到 pandas DataFrame

    我一直在尝试不同的方法来导入 SpaceX 任务csv file https www kaggle com spacex spacex missions downloads database csv on Kaggle https www
  • 无法加载文件或程序集 Microsoft.IdentityModel.Tokens 问题

    我正在尝试使用 JWT 令牌验证用户 我下面使用的代码在控制台应用程序中运行得非常好 但是当我想将它应用到我的 Azure 函数中时 它给出了错误 Could not load file or assembly Microsoft Iden
  • 系统属性管理

    有没有 足够 的方法来更改詹金斯的系统属性 改变它们最简单 最快的方法是什么 例如 我需要关闭无用的 在我的例子中 ping 线程 如果您确实想要一种快速而简单的方法来更改系统属性 您可以使用脚本控制台 https wiki jenkins
  • 参数/模式中“&variable”的含义

    什么是 variable当它用于模式或闭包参数时意味着什么 for code in self exit code iter let mut new seps do seps iter fold result next 这里我们有 code
  • JavaFX 自定义控制器工厂

    我一直在尝试FXMLLoader并使用setControllerFactory使用自定义方法Callback
  • 如何过滤文本框中的自动完成结果

    我为一个网站创建了自动完成 ajax 搜索 该网站自动完成组织名称和地址 但我希望它能够验证 当有人搜索组织名称时 地址文本应该仅给出自动完成结果 匹配搜索组织名称 谁能给我建议吗 ajax 组织地址 addresso GET term q
  • WCF服务参考生成自己的契约接口,不会重用我的

    我的第一个问题希望它合适 共享接口组装 我有一个 共享 程序集 它有一个接口 我们称之为它IDocRepository 它标有 ServiceContract 并且有几个 OperationContract 标记方法 WCF 实现组件 我有
  • 哪些 Java 库可以接受 HTTP 标头解析? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 哪些 Java 库解析 HTTPAccept header 你应该阅读这篇文章 http www xm
  • React Native - 如何从推送通知打开路线

    我在用着react navigation and react native push notification 我怎样才能打开某个StackNavigator s屏幕输入onNotification打回来 应该在以下情况下工作 应用程序已关