我想创建一个不基于 Google 服务或类似服务的通知系统提供程序。事实上,我想获取有关其整体架构和所需 Android sdk功能的信息。
对我来说最奇怪的一点是了解如何向 Android 设备发送通知。
我的意思是,我如何从互联网上数以百万计的其他 Android 设备中识别出安装了我的应用程序的 Android 设备?
我如何向他发送信息?我应该为这个或类似的东西使用套接字吗?
我想创建一个不基于 Google 服务或类似服务的通知系统提供程序。事实上,我想获取有关其整体架构和所需 Android sdk功能的信息。
对我来说最奇怪的一点是了解如何向 Android 设备发送通知。
我的意思是,我如何从互联网上数以百万计的其他 Android 设备中识别出安装了我的应用程序的 Android 设备?
我如何向他发送信息?我应该为这个或类似的东西使用套接字吗?
简单的回答:你不能
在所有其他事情之前,我应该更正您的问题,pusher 和 FCM 根本不在同一个组中!您可以构建诸如 pusher 或 oneSignal 之类的东西,但您不能构建诸如 FCM/APNS 之类的东西
您应该了解以下三个简单但重要的句子:
如果您没有要向其发送通知的手机的任何标识符,则您的服务器不知道在哪里发送该通知,因此我们需要一个用于手机的 resource_identifier_like这实际上是一个device_token_like并且您只有一种方法可以得到这个device_token_like 这就是 FCM/APNS
FCM 就像一个 dns 服务器,包含 google 支持的每个 android 设备(几乎每个 android 设备)的所有标识符,APNS 是一样的,但对于苹果设备
注意1:即使您的应用程序可以获得它对应的设备device_token_like,如果它没有在FCM/APNS上注册,它也不能用于推送通知
因此,当您现在获得所需 clinet_device 的 device_token_like 标识符时,您可以使用不同的方法将某物发送到该 clinet_device。有几种方法,如 SSE、Webpush、HTTP_server_push、Pushlet 等,但这些设备的母公司都不支持这些方法,唯一完全支持和标准的方法是 FCM/APNS 官方网站建议的方法
例如,由于美国制裁,名为najva的伊朗公司使用 webpush 发送通知,但 webPush 方法在浏览器和安卓设备上运行良好,但它们甚至没有出现在苹果设备上
最后我应该说,我很佩服你的好奇心,在你的开发中减少使用像 FCM/APNS 这样的基于利益的公司的任何东西,但我强烈推荐这些文章和书籍给你,因为我认为你没有学到足够的东西: