世博会推送通知:如何处理重复的令牌?

时间:2020-03-04 09:22:07

标签: javascript react-native expo

我正在尝试向我的博览会应用程序实施推送通知。我完成了设置工作,并且将Expo推送令牌(例如:ExponentPushToken [pRLp83O--xxxxxxxx])写入了后端。

这是我的PushNotifications.js

import { Notifications } from "expo";
import * as Permissions from "expo-permissions";

const PUSH_ENDPOINT =
  "https://backend.url";

export default async function registerForPushNotificationsAsync() {
  const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);

  // Stop here if the user did not grant permissions
  if (status !== "granted") {
    alert("No notification permissions!");
    return;
  }
  console.log(status);

  // Get the token that identifies this device
  let token = await Notifications.getExpoPushTokenAsync();
  console.log(token);

  // POST the token to your backend server from where you can retrieve it to send push notifications.
  return fetch(PUSH_ENDPOINT, {
    method: "POST",
    headers: {
      Accept: "application/json",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      token: token
    })
  });
}

我通过useEffect在App.js中调用它,以便立即获得许可以显示应用程序是否已打开:

import registerForPushNotificationsAsync from "./components/PushNotifications";

  useEffect(() => {
    registerForPushNotificationsAsync();
  }, []);

现在的问题是,每次保存时,令牌都会写入我的数据库。它不会再次询问权限,因此似乎可行,但是令牌已写入我的数据库。

这仅是因为Expo会在保存时重建吗?还是在以后发布我的应用程序时出现问题?如果是这样,我在做什么错?我正在考虑某种方式检查令牌是否已经存在,但是文档中没有提到该令牌,因此我不确定是否确实必要。

0 个答案:

没有答案