Expo.Notifications.addListener() 未触发(iOS 独立应用程序)

Posted

技术标签:

【中文标题】Expo.Notifications.addListener() 未触发(iOS 独立应用程序)【英文标题】:Expo.Notifications.addListener() is not firing (iOS standalone App) 【发布时间】:2019-01-25 07:23:47 【问题描述】:

我正在尝试在我的组件中使用 Expo.Notifictions.addListener(在 ios 独立版本上),但它不会触发,尽管通知已成功接收。

addListener() 放在componentDidMount() 函数中。

Expo.Notifications.addListener(this.handleNotification);

handleNotification = () => 
  this.setState(
    something: 3,
  );
;

【问题讨论】:

您能否澄清一下“...但它不会触发,尽管通知已成功接收。”是什么意思?您的意思是,当应用程序处于前台时,推送通知没有显示?另外,您使用的 SDK 版本是什么? @BrunoEduardoDAngelodeOlive 是的,我的意思是通知已发送到我的设备,但当应用程序处于前台时,侦听器没有反应。我正在使用版本:“28.0.0”。 我在我的应用程序中使用了相同的版本并且监听器被触发但是当应用程序在前台时我没有看到任何通知(虽然代码已经执行)。你有没有试过检查这对你来说是否一样?此外,似乎较旧的 SDK 可能存在错误 (forums.expo.io/t/…) 尝试更新到 v32.0.0 看看是否能解决您的问题。 如果应用程序在前台运行,iOS 不会显示通知横幅/警报。这是设计使然(例如,android 在顶部的状态栏中显示通知,而 iOS 并非如此)。这就是为什么我需要监听器来渲染组件或通知用户通知已经到来。如果你的听众正在工作,你能把你的代码示例吗?我也认为问题出在较旧的 SDK 上。 对不起,我不能,这是我在工作中开发的专有应用程序的代码。我现在不在家,但我会尽快为您提供一个有效的 iOS 示例,好吗? 【参考方案1】:

你没有在你的 addListener 函数中添加回调。

componentDidMount()
    Notifications.addListener(notification => 
      console.log(notification);  
    );

【讨论】:

以上是关于Expo.Notifications.addListener() 未触发(iOS 独立应用程序)的主要内容,如果未能解决你的问题,请参考以下文章