ios - 所有 iOS 设备均未收到通过 FCM 服务器发送的推送通知

标签 ios firebase firebase-cloud-messaging

我们在从服务器发送到主题的推送通知时遇到问题。实际上,这不是发送部分,而是接收部分。 部分 iOS 设备会收到推送通知,但并非全部。我们没有遇到过 Android 设备问题,我们收到过一份有关 Android 的报告,但我认为这是一个骗局。

技术细节

我们用 PHP 构建一个请求:

$topic = '/topics/urgent_de';

$data = [
    'to' => $topic,
    'priority' => 'normal',
    'notification' => [
        'title' => $pushNotification->title_de,
        'body' => $pushNotification->text_de,
        'topic' => 'urgent',
        'target' => $pushNotification->deeplink
    ],
    'data' => [
        'title' => $pushNotification->title_de,
        'message' => $pushNotification->text_de,
        'topic' => 'urgent',
        'target' => $pushNotification->deeplink
    ]
];

设备使用以下方式注册此主题:

let sub:SupportedLanguage = UrlHelper.getBestSupportedLanguage() == .de ? .de : .en
static let topicUrgent = "/topics/urgent"
static let topicUrgentLocalizedPrefix = "urgent_"

let localizedUrgent = "\(Constants.Push.topicUrgentLocalizedPrefix)\(sub.rawValue)"
Messaging.messaging().subscribe(toTopic: localizedUrgent)
LoggingHelper.info("Subscribed to topic: \(localizedUrgent)")
Messaging.messaging().subscribe(toTopic: Constants.Push.topicUrgent)
LoggingHelper.info("Subscribed to topic: \(Constants.Push.topicUrgent)")

这意味着,每个设备不仅订阅本地化主题,还订阅通用主题。

问题描述

去年 9 月,我们在两周内发出了几次推送,我们公司的一些设备收到了,一些没有收到。它不依赖于他们的应用程序或 iOS 版本。他们都已授予接收推送的权限。当我们发送推送时,它们都在线并正在运行。所有设备都没有在前台运行我们的应用程序。有些人已经几周没有启动该应用程序了,有些人在同一天就打开了。

我们已经尝试过的

  1. 我们尝试了高优先级
  2. 我们试图了解有多少用户受到影响。但Firebase控制台中的报告似乎不包括iOS设备,或者Firebase无法跟踪iOS设备是否收到推送(当将过滤器“平台/ channel ”设置为“iOS”或将“应用程序”设置为“iOS应用程序”时,收到的数量是“0”,但发送到了数千个)
  3. 我们将一台未收到推送的 iOS 设备放在我们的开发 Macbook 上
    • 我们尝试检查日志,但(当然)没有输出
    • 然后我们从 XCode 进行部署并向该设备的 token 发送推送,但已收到 => 我们无法重现该问题。
    • 然后,我们卸载了开发版本并从应用商店安装了应用。
    • 收到以下推送
    • 几个月后,我们再次推送了该主题。没有收到。
  4. 我搜索了 stackoverflow 和其他资源,但没有找到这个具体问题(通常是未收到推送或类似问题)

总而言之,当我们查看公司的所有设备时,只有一半设备收到这些推送通知。

最佳答案

这是一个简单的检查,但值得尝试。

请检查您是否在未收到推送通知的设备上启用了推送通知。

此外,请检查 iOS 上通知的“授权”请求是否处理不同的 iOS 版本 (Swift/iOS),因为它们不一样,可能会有所不同。

让我知道...

关于ios - 所有 iOS 设备均未收到通过 FCM 服务器发送的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904178/

相关文章:

java - 致命异常 : Firebase-Messaging-Intent-Handle -- java. lang.NoClassDefFoundError

ios - NSURLSession 下载任务在成功后失败

iphone - 付费到免费反射(reflection)时间Appstore

amazon-web-services - 无法从 AWS Lambda 上托管的 Alexa Skill 中将数据推送到 Firebase

google-cloud-messaging - 服务器 API key : migration doc vs migration video

ios - FCM 通知问题 - swift3

iphone - tableview在xml解析完成之前加载,数据未加载

ios - 如何在特定位置将View添加到ScrollView?

firebase - 如何增加Firebase数据库读取时间并防止Nginx超时

firebase - 如何在Firebase Crashlytics中搜索崩溃?