Android 创建我自己的推送通知服务,而不使用fcm、pusher、,

Android 创建我自己的推送通知服务,而不使用fcm、pusher、,,android,push-notification,sdk,notificationservices,Android,Push Notification,Sdk,Notificationservices,我想创建一个通知系统提供商,它不基于谷歌服务或类似服务。事实上,我想了解它的总体架构和所需的Androidsdk功能 对我来说,最奇怪的一点是理解如何向Android设备发送通知 我的意思是,我如何从互联网上数以百万计的其他安卓设备中识别安装了我的应用程序的安卓设备 我如何向他发送信息? 我应该为这个或类似的东西使用插座吗?简单回答:你不能 在我纠正你的问题之前,pusher和FCM根本不在同一组!您可以构建一些东西,比如pusher或oneSignal等,但不能构建FCM/APNS之类的东西

我想创建一个通知系统提供商,它不基于谷歌服务或类似服务。事实上,我想了解它的总体架构和所需的Androidsdk功能

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

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

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

简单回答:你不能

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

你应该理解以下三个简单但重要的句子:

  • 当您想要从place_1(例如api)拉取任何东西到place_2(例如浏览器_客户端)时,您最需要的是place_1_资源的标识符(通常是api的统一资源定位器)
  • 当你想把任何东西从place_1(例如通知中心服务器)推送到place_2(手机客户端)时,你最需要的是place_2资源的标识符
  • 您必须知道真正的服务器推送类似服务器推送的技术之间的区别,如长拉或。。。您应该知道,这个概念的目的是真正的服务器推送而不是用推送夹克拉动 如果你没有手机的任何标识符,你想向它发送通知,你的服务器不知道向哪里发送通知,所以我们需要一个手机的资源标识符,它实际上是一个设备令牌,你只有一种方法来获取这个设备令牌,那就是FCM/APNS

    FCM就像一个dns服务器,包含谷歌支持的每个安卓设备(几乎每个安卓设备)的所有标识符,APNS与苹果设备完全相同

    注1:即使您的应用程序可以获得相应的设备令牌,但如果未在FCM/APNS上注册,则无法将其用于推送通知

    因此,当您现在获得所需clinet_设备的类似设备令牌的标识符时,您可以使用不同的方法将某物发送到该clinet_设备。有几种方法,如SSE、Webpush、HTTP_server_push、Pushlet等,但这些设备的母公司都不支持这些方法,唯一完全受支持且标准的方法是FCM/APNS官方网站建议的相同方法

    例如,一家名为webpush的伊朗公司因为美国的制裁而使用webpush发送通知,但webpush方法在浏览器和android设备上运行良好,但在苹果设备上甚至无法使用

    最后,我要说的是,我很欣赏你的好奇心,在你的开发过程中尽量少使用FCM/APNS等基于利益的公司的任何东西,但我强烈推荐这些文章和书籍给你,因为我认为你学到的还不够:


  • 停下来想一想你将要做什么:你将要实现一个功能,一大群谷歌开发者已经在这个功能上工作了几年,而你看起来甚至不知道从哪里开始。我并不是说这是不可能的,但你可能至少要花几年时间来开发它。谢谢你的回答,也许我已经准备好了,我会接受朋友们的任何帮助来实现这个目标;)好吧,那么我可以提出一些一般的想法:FCM的推送通知实际上不是推送。它们是拉式的,就像Android设备一样,通过一些修改过的套接字连接连接到FCM服务器,并在数据可用时读取数据。至于如何知道要发送到哪个设备-设备上的每个应用程序实例在整个世界都有自己的唯一ID,这是在第一次FCM客户端初始化期间生成的。您可以通过该ID识别设备/应用程序。您希望如何将新消息通知您的(可能正在睡觉的)设备?这根本不可能(除非您构建自己的固件)