我正在为我的应用程序使用expo通知,它在ios上可以正常运行,但在android上不起作用。我执行通知的方式是通过以下代码获取密钥
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
);
let finalStatus = existingStatus;
// only ask if permissions have not already been determined, because
// iOS won't necessarily prompt the user a second time.
if (existingStatus !== 'granted') {
// Android remote notification permissions are granted during the app
// install, so this will only ask on iOS
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
finalStatus = status;
}
// Stop here if the user did not grant permissions
if (finalStatus !== 'granted') {
return;
}
// Get the token that uniquely identifies this device
let token = await Notifications.getExpoPushTokenAsync();
alert(token)
然后将令牌保存在服务器中并按以下方式发送通知:
发送帖子方法 https://exp.host/--/api/v2/push/send
{
"to": "ExponentPushToken[HOKJqEF5FdGLRO7s-Kg4Ns]",
"title":"Test",
"body": "Test"
}
我是否必须使用firebase FCM使其在Android中工作?
答案 0 :(得分:0)
根据tutorial博览会,除非您要创建要发布的APK,否则FCM无需在Android上使用Expo推送通知服务。
我已经创建了一个snack进行比较,您可能需要安装expo的真实设备才能获得推送令牌。致电https://exp.host/--/api/v2/push/send
时,您应该收到如下响应:
{
"data": {
"id": "a0c9af62-5b56-449e-aaea-51bee782dd3d",
"status": "ok"
}
}
答案 1 :(得分:0)
是的,如果您想在 Google Play 商店中发布您的应用 - 这就是重点。在世博应用程序中,它还在引擎盖下使用了 FCM。
expo push notification documentation page 中提到的不是很清楚,推送通知在独立的 android/ios 应用程序中工作需要几个步骤。虽然它在文档中提到页面底部的“后续步骤”,但从第一段来看,他们并不清楚他们将 expo 应用程序通知与独立的 android/ios 应用程序通知区分开来。相反,它认为 Expo 会处理所有事情,就好像独立应用程序不需要更多步骤一样。它当然仅适用于 Expo 应用程序。但是,当我们进入 Next Steps 页面时,我们会在“凭据”部分找到最重要的信息。
这就是 Android Standalone 应用程序的工作方式(我已经完成了)。我们需要设置我们自己的 Firebase 项目,如此处 Using FCM for Push Notifications 所述。如果您使用 Expo 服务器发送 Push 通知,请确保按照“上传服务器凭据”的步骤操作。您将看到在您的 Expo 凭证中添加了 FCM 服务器密钥。
应该不会花太多时间,但对我来说,设置这些额外步骤需要 1 个小时左右,因为我是第一次学习这些。