【问题标题】:.NET Core Web API push to Apple/Android push notification servers.NET Core Web API 推送到 Apple/Android 推送通知服务器
【发布时间】:2019-03-07 16:37:42
【问题描述】:

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

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

我必须使用哪些选项将 net core Web API 连接到 android/apple 推送通知服务器?有从 .net 服务向移动客户端发送客户端推送通知的经验吗?

【问题讨论】:

    标签: android asp.net-core push-notification apple-push-notifications signalr


    【解决方案1】:

    使用 CorePush 库

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

    1. NuGet package
    2. Documentation

    界面非常简洁:

    发送 APN 消息

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

    发送 FCM 消息

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

    【讨论】:

    • 样本和文档都是垃圾,甚至没有告诉你如何获得令牌或什么也没有
    • @csharpdude77 他们不必这样做。这些文档适用于库,而不适用于 firebase 或 apn 或 Apple/Android 推送通知订阅。
    • @Andrei 如何使用此包订阅主题,如何使用此包创建群组?
    【解决方案2】:

    您需要使用以下参数向 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 获取您的服务器令牌。您还需要set up APN 才能使其在 iOS 上运行。 你可以找到更多信息here

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 谢谢,太糟糕了,我们必须为企业使用付费:)
        【解决方案5】:

        我在这个讨论中已经很晚了,但它仍然可以帮助有同样问题的人:

        • 离线推送通知:我们将常规/在线推送通知和本地通知结合使用了一次。所以,思路是把接下来的N个定时通知同步到客户端,然后直接在客户端发送本地通知。当然,tji 场景并不适用于所有业务案例。
        • 定期推送通知:我们使用我们自己的库 https://www.nuget.org/packages/PushNotifications.Server.AspNetCore/ 发送推送请求,它与 Android/FCM 和 Apple/APNS 完美集成。阅读自述文件,初步了解 API。

        【讨论】:

          猜你喜欢
          • 2019-04-22
          • 1970-01-01
          • 2017-11-18
          • 2017-07-07
          • 2010-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多