【问题标题】:create my own push notification service without fcm , pusher ,在没有 fcm 、 pusher 的情况下创建我自己的推送通知服务,
【发布时间】:2018-06-14 05:16:50
【问题描述】:

我想创建一个不基于 Google 服务或类似服务的通知系统提供程序。事实上,我想了解它的整体架构和所需的 Android sdk 功能。

对我来说最奇怪的一点是了解如何向 Android 设备发送通知。

我的意思是,我如何从互联网上数以百万计的其他 Android 设备中识别出安装了我的应用程序的 Android 设备?

我该如何向他发送信息? 我应该为这个或类似的东西使用套接字吗?

【问题讨论】:

  • 稍等片刻,想想你要做什么:你要实现一个功能,一大群 Google 开发人员已经为此工作了几年,然后你看甚至不知道从哪里开始。我并不是说这是不可能的,但您可能会花费至少几年的时间来开发它。
  • 谢谢你的回答,也许我已经准备好了,我会接受朋友们的任何帮助来捕捉这个目标;)
  • 一切顺利,尽管我看到你正试图煮沸海洋。
  • 好的,那么我可以提出一些一般性的想法:来自 FCM 的推送通知实际上不是 push。它们是 pull,因为那是 Android 设备,它通过一些修改过的套接字连接连接到 FCM 服务器,并在数据可用时读取数据。至于如何知道要发送到哪个设备 - 设备上的每个应用程序实例在全世界都有自己的唯一 ID,这是在第一次 FCM 客户端初始化期间生成的。您可以通过该 ID 识别设备/应用程序。
  • 您希望如何通知您的(可能正在休眠的)设备有新消息?这根本不可能(除非您构建自己的固件)

标签: android push-notification sdk notificationservices


【解决方案1】:

简单的回答:你不能

在我纠正你的问题之前,pusher 和 FCM 根本不在同一个组中!您可以构建诸如 pusher 或 oneSignal 之类的东西,但您不能构建诸如 FCM/APNS 之类的东西

你应该明白下面三个简单而重要的句子:

  1. 当您想从 place_1(eg api) 拉取任何东西到 place_2(eg browser_client) 时,您最有一个 place_1_resource 标识符(通常是统一的api的资源定位器)
  2. 当您想要将任何内容从 place_1(例如 notification_central_server) 推送到 place_2(cellphone_client) 时,您最有一个 place_2_resource 的标识符
  3. 您必须知道真正的服务器推送类似服务器推送的技术(如long-pulling 或...)和您应该知道,这个概念的意图是真正的服务器推送,而不是任何形式的推送!

如果您没有要向其发送通知的手机的任何标识符,则您的服务器不知道将该通知发送到何处因此我们需要一个用于手机的 resource_identifier_like,这实际上是device_token_like 而你只有一种方法可以得到这个 device_token_like,那就是 FCM/APNS

FCM 就像一个 dns 服务器,包含 google 支持的每个 android 设备(几乎每个 android 设备)的所有标识符,APNS 是一样的,但对于苹果设备

note1:即使你的应用可以获取到它对应的device_token_like,如果它没有在FCM/APNS上注册,它也不能用于推送通知

因此,当您现在获得所需 clinet_device 的 device_token_like 标识符时,您可以使用不同的方法将某物发送到该 clinet_device。有几种方法,如 SSE、Webpush、HTTP_server_push、Pushlet 等官网建议

例如,一个名为 najva 的伊朗公司使用 webpush 发送通知,因为美国制裁,但 webPush 方法在浏览器和安卓设备上运行良好,但它们甚至没有出现在苹果设备上

最后我应该说,我很佩服你的好奇心,在你的开发中减少使用 FCM/APNS 等基于利益的公司的任何东西,但我强烈推荐这些文章和书籍给你,因为我认为你没有学到足够的知识:

  1. wikipedia of push technology
  2. story of some guy who tries to make his own push notification service
  3. Push Technology A Complete Guide - 2020 Edition
  4. Data Push Apps with HTML5 SSE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多