【问题标题】:FCM not seeing messages sent from spring backend appFCM 看不到从 Spring 后端应用程序发送的消息
【发布时间】:2020-02-05 00:15:03
【问题描述】:

我在 Firebase Cloud Messaging 下配置了一个 Android 应用,当我从控制台发送通知时,我在 Android 应用中看到了通知。

我现在正在尝试实现从后端服务器 java spring 应用程序发送通知,这是我的服务:

@Slf4j
@Service
public class FCMService {


    public void sendMessageWithData() throws FirebaseMessagingException {
        Message message = getPreconfiguredMessageWithData();
        String response = sendAndGetResponse(message);
        log.info("Sent message with data.");
    }


    private String sendAndGetResponse(Message message) throws FirebaseMessagingException {
        return FirebaseMessaging.getInstance().send(message);
    }

    private AndroidConfig getAndroidConfig(String topic) {
        return AndroidConfig.builder()
            .setTtl(Duration.ofMinutes(2).toMillis()).setCollapseKey(topic)
            .setPriority(AndroidConfig.Priority.HIGH)
            .setNotification(AndroidNotification.builder().setSound("default")
                .setColor("#FFFF00").setTag(topic).build()).build();
    }

    private ApnsConfig getApnsConfig(String topic) {
        return ApnsConfig.builder()
            .setAps(Aps.builder().setCategory(topic).setThreadId(topic).build()).build();
    }

    private Message getPreconfiguredMessageWithData() {
        return getPreconfiguredMessageBuilder().setTopic("all")
            .putData("test", "data")
            .build();
    }


    private Message.Builder getPreconfiguredMessageBuilder() {
        AndroidConfig androidConfig = getAndroidConfig("all");
        ApnsConfig apnsConfig = getApnsConfig("all");
        return Message.builder()
            .setApnsConfig(apnsConfig).setAndroidConfig(androidConfig)
            .setNotification(
                new Notification("sample title", "sample message"));
    }


}

消息已正确发送,我在响应中获得了消息的 ID,但该通知在应用程序中不可见,并且我无法在 Firebase 控制台中将其视为新通知。哪里有问题?我还缺少什么吗?

【问题讨论】:

    标签: java android spring firebase spring-boot


    【解决方案1】:

    您可以使用 curl 测试您的应用发送推送通知,这样您可以验证问题是在您的服务中还是在您的应用中

    curl -X POST -H "Authorization: Bearer YOUR-TOKEN" -H "Content-Type: application/json" -d '{
        "message":{
        "token":"TARGET_DEVICE_TOKEN",
        "notification":{
          "title":"Hello",
          "body":"This is a text message!"
        }
      }
    }' https://fcm.googleapis.com/v1/projects/YOUR-PROJECT-SHORT-NAME/messages:send
    

    【讨论】:

    • 我是否总是需要设备令牌?如何向我的 firebase 项目中的所有设备发送通知?
    • 有很多方法可以处理这个问题,例如将每个设备的令牌保存在您的数据库中,有一种方法可以向所有用户发送推送通知,在这种情况下不需要特定令牌
    • 谢谢,我还有一个问题:当我在服务器端初始化我的应用程序然后获取 firebase 应用程序实例时,我得到一个名为 DEFAUL 的应用程序,你知道为什么会发生这种情况吗?跨度>
    • 看不懂,哪里可以看到这个DEFAULT?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2022-08-19
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多