为什么 GCM 和 APN 通知在某些客户端上显示,而在其他客户端上不显示?

问题描述 投票:0回答:1

我们的 Android 应用程序中 GCM 和 APN 的奇怪案例。

  • 我们为企业提供GCM/APN通知服务等。

  • 在某些企业中,通知仅在 Android 上显示 在这些情况下,APNServerAPIKey 和 GCMServerAPIkey 通常是不同的。它在 apn 响应负载中显示不匹配的发件人 ID。

  • 在某些企业,通知仅在 ios 上发送

这里的 apnserverapikey 和 gcmserverapikey 是相同的。 apn 和 gcm 的响应负载均成功,但通知仅在 ios 上显示。

  • 在一些企业中,我们遇到了senderid不匹配的问题。当我们设置gcmkey=apnkey后,这个问题在部分企业得到了解决。

  • 在某些企业中,我们会收到无效的 apn 凭据。不匹配和无效凭据之间的确切区别是什么?这些密钥由谁以及在哪里进行验证?该系统的架构概述是怎样的? 我们已经测试了该问题是否由设备问题引起,并在尽可能现代的 Android 设备上进行了测试。它不会被发送。我们已检查并打开通知。一切都做了。但还是不行。

我们尝试直接使用FCM_REG_ID推送通知,仍然不会发送。

有没有办法检查api密钥是否过期?如果是的话,请分享提示。

当日志显示 Mismatchsenderid 时,我只需设置 gcm=apn 即可解决问题。 但当日志除了成功之外什么也没说时,我不太确定我能做什么。

我们也尝试清除缓存。

更新:尝试如果在 iOS didReceiveRemoteNotification 中向 GCM/FCM 发送“数据”(但“通知”有效)有效负载,则不会接收推送通知 看看这个并做了一个简短的尝试。

curl -X POST \
https://fcm.googleapis.com/fcm/send \
  -H 'authorization: key=gcm_server_api_key' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
    "notification": {
        "body": "kanemer akheko curl"
    },
    "to" : "device_id"
}'

我得到了成功的回应。

{"multicast_id":##multicastidgoeshere##,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:message_id_goes_here"}]}

每一步都让我感到好奇。

android notifications apple-push-notifications google-cloud-messaging
1个回答
0
投票

有 2 个问题。

如果在 iOS didReceiveRemoteNotification 中将“数据”(但“通知”起作用)有效负载发送到 GCM/FCM,则不会收到推送通知

正如此处所述,您需要放置这些附加标头。

同时应用程序希望“自动启动”打开(在 Android 设备中)。

© www.soinside.com 2019 - 2024. All rights reserved.