并非所有iOS设备都通过FCM服务器发送推送通知

时间:2019-02-27 11:13:32

标签: ios firebase firebase-cloud-messaging

从服务器发送到主题的推送通知存在问题。实际上,这不是发送部分,而是接收。该推送通知是由某些 iOS设备接收的,而不是 all 。我们没有遇到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设备是否收到了推送(将过滤器“平台/渠道”设置为“ iOS”或将“应用”设置为“ iOS应用”时,收到的数字为“ 0”,但发送到几千)
  3. 我们将一台iOS设备放置在开发Macbook上,但未获得任何推动
    • 我们尝试检查日志,但是(当然)没有输出
    • 然后,我们从XCode进行了部署,并向该设备的令牌发送了推送,但已收到它=>我们无法重现该问题。
    • 然后,我们从应用商店中卸载了开发版本并安装了应用。
    • 已收到以下推送
    • 几个月后,我们又对主题进行了推送。没有收到。
  4. 我搜索了stackoverflow和其他资源,但是没有找到这个特定问题(通常是没有收到推送或类似请求的问题)

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

1 个答案:

答案 0 :(得分:0)

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

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

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

让我知道...