.NET Core Web API 推送到 Apple/Android 推送通知服务器



我在.NET Core Web API中有聊天服务,当客户端在线时通过Signal R处理聊天消息。

另外,我有移动客户端(安卓/苹果(,我需要处理客户端处于离线模式时发送的消息。我知道客户是否离线/在线。因此,当客户端脱机时,我想向苹果/android推送通知服务器发送消息,以便它可以通知设备有关新消息的信息。

我有哪些选项可以将网络核心Web API连接到android/Apple推送通知服务器?从 .net 服务向移动客户端发送客户端推送通知的任何经验?

使用 CorePush lib

它非常轻巧。我在所有项目中都使用它来发送FirebaseAndroid和AppleiOS推送通知。有用的链接:

  1. NuGet 包
  2. 文档

界面非常简单和简约:

发送接入点消息

var apn = new ApnSender(settings, httpClient);
await apn.SendAsync(notification, deviceToken);

发送商品信息管理:

var fcm = new FcmSender(settings, httpClient);
await fcm.SendAsync(deviceToken, notification);

您需要使用以下参数向 https://fcm.googleapis.com/fcm/send 发出 POST 请求页眉

  • 授权:key=YOUR_SERVER_KEY
  • 内容类型:Application/JSON

身体:

{
"to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
"collapse_key" : "type_a",
"notification" : {
"body" : "First Notification",
"title": "Collapsing A"
},
"data" : {
"body" : "First Notification",
"title": "Collapsing A",
"key_1" : "Data for key one",
"key_2" : "Hellowww"
}

您可以从Firebase Console获取服务器令牌。此外,您还需要设置 APN 才能在 iOS 上运行。 您可以在此处找到更多信息

在这种情况下,可以使用任何云解决方案,例如 Azure 通知中心。

可以查看文档并使用通知中心配置应用。使用默认配置,您将能够将通知广播到所有已注册的设备。

但是在您的情况下,您需要向特定设备发送通知。在这种情况下,您需要使用标签。向通知中心注册设备时,请使用唯一 ID 注册该设备。因此,当您发送通知时,请使用与标签相同的唯一 ID 发送它,并且该设备只会收到它。

您可以使用Pusher。它是一个简化推送通知工作的平台。目前,它支持Android,iOS和基于通道的通知,在我看来,它比Azure Notifications或Amazon SNS更容易配置。

我在这个讨论中很晚,但它仍然可能对有相同问题的人有所帮助:

离线推送通知
  • :我们曾经将常规/在线推送通知和本地通知相结合。因此,这个想法是将下一个 N 个计划通知同步到客户端,然后直接在客户端上发送本地通知。当然,tjis 场景并不适用于所有业务案例。
  • 定期推送通知:我们使用自己的库发送推送请求,https://www.nuget.org/packages/PushNotifications.Server.AspNetCore/库与Android/FCM和Apple/APNS完美集成。阅读自述文件以获得 API 的第一印象。

最新更新