gpt4 book ai didi

ios - 在 iPhone 启动时发送推送通知 - 通知未发送到设备

转载 作者:行者123 更新时间:2023-12-01 19:39:29 36 4
gpt4 key购买 nike

我们从我们的测试人员那里得到报告,称并非所有 Apple 推送通知都已交付。具体来说,如果在目标设备启动时发送通知 (启动、建立网络连接等),然后 从未收到通知 .

我了解 APNS 会尽最大努力提供通知。我已经阅读了Apple's documentation其中关于 QoS 的内容如下:

Apple Push Notification service includes a Quality of Service (QoS) component that performs a store-and-forward function. If APNs attempts to deliver a notification and the destination device is offline, APNs stores the notification for a limited period of time and delivers it when the device becomes available again. This component stores only the most recent notification per device and per app. If a device is offline, sending a notification request targeting that device causes the previous request to be discarded. If a device remains offline for a long time, all its stored notifications in APNs are discarded.



我设置了 apns-expiration到 90 分钟使用 QoS 功能。

通知 交付时间:
  • 通知是在设备打开并正常运行时发送的。
  • 通知是在设备关闭时发送的(随后在设备打开后不久发送)。

  • 顺便说一句,我们正在使用带有 Azure 通知中心的模板通知来与 APNS 集成。因此,我们的 APNS 过期和优先级配置如下所示:
    registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, PushNotifications.IosTemplate)
    {
    Expiry = DateTimeOffset.UtcNow.AddMinutes(90).ToString("o"),
    Priority = "10"
    };

    我该如何调试/解决这个问题,有没有人遇到过类似的行为?

    最佳答案

    通过将以下 header 添加到每个模板通知来解决此问题:

    var templateProperties = new Dictionary<string, string> {
    // omitted
    };

    var notification = new TemplateNotification(templateProperties);

    notification.Headers.Add("ServiceBusNotification-Apns-Expiry", DateTimeOffset.UtcNow.AddDays(7).ToString("yyyy-MM-ddTHH:mmzzz"));
    notification.Headers.Add("apns-expiration", DateTimeOffset.UtcNow.AddDays(7).ToUnixTimeSeconds().ToString());

    await hubClient.SendNotificationAsync(notification, destinationTags);

    并删除了 Expiry AppleTemplateRegistrationDescription 初始化的属性:
    var apnsHeaders = new Dictionary<string, string> { { "apns-priority", "10" } };
    registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, PushNotifications.IosTemplate, apnsHeaders)
    {
    Priority = "10"
    };

    看看 Microsoft.Azure.NotificationHubs 很有用GitHub上的源代码。

    关于ios - 在 iPhone 启动时发送推送通知 - 通知未发送到设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56334532/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com