Expo推送通知在生产环境中无法正常工作。

3

SDK版本:40 平台:Android

推送通知只在开发模式下在开发设备中工作,在其他设备中的开发模式(usb yarn react-n run-android)不起作用...(fcm设置)在我使用bundleRelease(eject)构建并发布到playstore后,它不起作用。我可以在Google控制台或Expo控制台中设置为生产环境吗?在哪里?我正在使用Insomnia(exp.host/–/api/v2/push/send)进行测试,在开发中可以,但在其他设备和生产中不行,为什么在一个设备上工作而在其他设备上不工作?我也看到了安装后生成的指数推送。

OBS:我在重新安装应用程序后刷新新令牌...

我最近尝试过:

我生成了.apk并在另一台设备上尝试,但只在我的开发设备上工作。

// Notifications.setNotificationHandler(null); //tried as well

Notifications.setNotificationHandler({
handleNotification: async () => {
return {
shouldShowAlert: true,
shouldPlaySound: true,
shouldSetBadge: false,
};
},
});

问题是由于我使用gradlew assembleRelease构建引起的吗?我需要使用eas build平台android进行构建吗?

我目前正在使用exeperienceId:@username/slug而不是ApplicationId来注册推送令牌。

1个回答

1

你的通知在生产环境中无法正常工作有两个原因:

  1. 我认为你正在使用 Notifications.getExpoPushTokenAsync() 创建通知令牌,这将创建一个仅可在 Expo 环境中使用的通知令牌。我建议你使用 Notifications.getDevicePushTokenAsync() 创建通知令牌,这将创建一个可以与 FCM 一起使用的通知令牌。

  2. 你正在调用 Expo API exp.host/–/api/v2/push/send,这是不正确的。如果你想让你的通知在物理设备上工作,你需要首先创建一个设备令牌,如第1点所述生成,然后你应该调用 FCM API https://fcm.googleapis.com/fcm/send

这应该解决你的问题。


有人今天告诉你你很美吗?它有效,下面是请求的正文:{ "to": "token", "notification": { "title": "title", "body": "body", "icon": "icone_da_notificacao" }, "data": {} }头部 -> 授权:key=fcm_cloud_msg_TOOOOOOKKKEEEEEEEEENNNNNNN - Thomas Reolon
但是你认为发生了什么,我的后台任务没有在开发模式下显示通知?像您提到的那样解决了推送问题,但我的后台通知还没有显示。=/ - Thomas Reolon
什么是后台通知?是指应用程序在后台运行而未接收到通知吗? - Adii_Mathur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接