反应本地本地通知

时间:2019-02-25 18:37:10

标签: react-native push-notification notifications apple-push-notifications expo

我是React Native的新手,需要实现一项功能,使应用程序需要每天在特定时间向用户发送通知。每天要显示的数据存储在客户端的json文件中,并且不会更改。通知按计划进行。鉴于我希望有一种方法可以仅从应用程序本身触发通知。

有人知道一种无需将应用程序与博览会分离就可以实现这一目标的方法吗?如果不运行react-native链接,则无法使用“ react-native-push-notification”,这需要我拆离该应用程序。那正确吗?

这可能吗?

谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以使用scheduleLocalNotificationAsync函数通过expo进行此操作(有关更多详细信息,请查看these docs)。确保您有权先发送通知。请注意,如果在应用程序处于前台时触发通知,则不会看到通知,但您仍然可以收听此事件。

i。寻求许可

import { Permissions } from 'expo';

// ... somewhere before scheduling notifications ...
const { status } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
if (status !== 'granted') {
  await Permissions.askAsync(Permissions.NOTIFICATIONS);
}

ii。安排通知

import { Notifications } from 'expo';

const notification = {
  title: 'Hi there!',
  body: 'Tap me to open the app.',
  android: { sound: true }, // Make a sound on Android
  ios: { sound: true }, // Make a sound on iOS
};

const options = {
  time: Date.now() + 10000, // Schedule it in 10 seconds
  repeat: 'day', // Repeat it daily
};

// ... somewhere after requesting permission ...
const id = Notifications.scheduleLocalNotificationAsync(notification, options)

// If you want to react even when your app is still in the
// foreground, you can listen to the event like this:
Notifications.addListener(() => {
  console.log('triggered!');
});

iii。取消预定的通知

您可以使用返回的scheduleLocalNotificationAsync函数ID取消通知。

import { Notifications } from 'expo';

// ... get the id of the scheduled notification ...

Notifications.cancelScheduledNotificationAsync(id)