世博会推送通知不适用于独立应用程序

Expo Push Notification not working on standalone app

我使用 expo 推送系统设置了推送通知,当通过 ExpoGo 使用该应用程序时它工作正常。但是在 Play 商店安装的应用程序中,它不起作用。调试应用程序我发现

token = (await Notifications.getExpoPushTokenAsync()).data;

没有返回任何内容,因为它从未运行过之后的警报。

async function registerForPushNotificationsAsync() {
    let token;
    const { status: existingStatus } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
    let finalStatus = existingStatus;
    if (existingStatus !== 'granted') {
      const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
      finalStatus = status;
    }
    if (finalStatus !== 'granted') {
      alert('Failed to get push token for push notification!');
      return;
    }
    alert('1')
    token = (await Notifications.getExpoPushTokenAsync()).data;
    alert('2')
    if (Platform.OS === 'android') {
      Notifications.setNotificationChannelAsync('default', {
        name: 'default',
        importance: Notifications.AndroidImportance.MAX,
        vibrationPattern: [0, 250, 250, 250],
        lightColor: '#FF231F7C',
      });
    }

    //sending the token to my api
    api.put('xxx', {
      notification_token: token,
    });
  }

我该怎么办?我有什么想念的吗?我只是使用了文档中给出的代码 https://docs.expo.io/push-notifications/overview/

我找到了解决方案。

要点是,在设置推送通知的文档中,出于某种原因,他们没有提到必须设置一个 firebase 帐户才能在独立应用程序中推送通知,即使我使用的是 expo 系统.

在此 link https://github.com/expo/expo/issues/9770

中找到了解决方案

并使用 link https://docs.expo.io/push-notifications/using-fcm/

设置 FCM

expo push notification documentation page is not super clear in mentioning that, there are few steps needed for push notification to work in a standalone android/ios app. Although it mentions in the documentation as "Next Steps" at the bottom of the page, but from the first paragraph it is not certainly clear that they are distinguishing expo app notification from standalone android/ios app notification. Rather it felt that Expo takes care of all the things as if no more steps require for standalone apps. It is certainly right only for Expo app. However, when we land into the Next Steps 页面,我们在“凭据”部分找到了最重要的信息。

这就是 Android 独立应用程序(我已经完成)的工作方式。我们需要设置我们自己的 Firebase 项目,正如这里所说 Using FCM for Push Notifications。如果您使用 Expo 服务器发送推送通知,请确保按照“上传服务器凭据”的步骤进行操作。您将在您的 Expo 凭据中看到 FCM 服务器密钥。

应该不会花太多时间,但对我来说,设置这些额外的步骤需要 1 小时左右,因为我是第一次学习这些。

android 上的通知对我们的项目不起作用。除了其他答案之外,还有以下一些帮助:

  • 我已将 FCM 服务密钥上传到 Expo
  • 将 SHA 证书指纹放入 Firebase 项目
  • getExpoPushTokenAsync
  • 中明确设置experienceId