Moh*_*ini 11 sdk android notificationservices push-notification
我想创建一个不基于 Google 服务或类似服务的通知系统提供程序。事实上,我想获得有关其整体架构和所需的 Android sdk功能的信息。
对我来说最奇怪的一点是了解如何向 Android 设备发送通知。
我的意思是,我如何从互联网上数以百万计的其他 Android 设备中识别安装了我的应用程序的 Android 设备?
以及如何向他发送信息?我应该为此或类似的东西使用套接字吗?
简单的答案:你不能
首先我要纠正你的问题,pusher 和 FCM 根本不属于同一组!你可以构建像 Pusher 或 oneSignal 之类的东西,但你不能构建像 FCM/APNS 这样的东西
你应该明白下面三个简单但重要的句子:
如果您没有任何想要向其发送通知的手机标识符,则您的服务器不知道将该通知发送到哪里,因此我们需要一个类似于手机的资源标识符,它实际上是一个类似设备令牌的资源,您只有一种方法来获取此信息device_token_like,即 FCM/APNS
FCM 就像一个 dns 服务器,包含 google 支持的每个 Android 设备(几乎每个 Android 设备)的所有标识符,APNS 是相同的,但适用于 Apple 设备
注意1:即使您的应用程序可以获得其对应的设备device_token_like,如果它没有在FCM/APNS上注册,也不能用于推送通知
因此,当您获得所需 clinet_device 的 device_token_like 标识符时,您现在可以使用不同的方法将某些内容发送到该 clinet_device。有几种方法,如 SSE、Webpush、HTTP_server_push、Pushlet 等,但这些设备的 mother_companies 都不支持这些方法,唯一完全支持和标准的方法与 FCM/APNS 官方网站建议的方法相同
例如,由于美国制裁,一家名为najva的伊朗公司使用 webpush 发送通知,但 webPush 方法在浏览器和 Android 设备上运行良好,但它们甚至没有出现在苹果设备上
最后我应该说,我钦佩你的好奇心,在你的开发中减少使用基于福利的公司(如 FCM/APNS)的任何东西,但我强烈推荐这些文章和书籍给你,因为我认为你学得还不够:
小智 5
你不能(至少在你创建自己的 ROM 之前)
在构建自己的推送通知服务器之前,您首先需要了解它在 android 内部是如何工作的。每当您/您的服务器向 Android 客户端发送推送通知消息时,SDK 都会对其进行处理并向您显示通知。但是,当您的应用程序未运行(或被杀死)时,您的应用程序无法响应它,因为它没有运行。在这种情况下,您的通知消息将发送到称为Google Play 服务的系统服务。为此,您首先需要将您的应用程序与Google Play 服务绑定,这就是FCM 所做的。FCM SDK 会在第一次初始化时将您的应用程序注册到操作系统服务。该 FCM 服务向一个端口开放,该端口侦听来自服务器的传入消息,当它收到消息时,它会代表您的应用程序发布包含PendingIntent数据的通知。然后,PendingIntent当用户单击它时,将其传递到您的应用程序,最后您的应用程序处理数据(或推送消息)
所以基本上,为了让您的服务器与客户端通信,它首先需要与FCM 服务通信,为此,FCM 会为您提供一个令牌,该令牌标识要向内部Google Play 服务注册的应用程序。
进一步简化,工作流程如下:-
push message---> FCM---> Google play service,
Google play service-->Your appPendingIntentSo, Google play service--> PendingIntent--->|传递的 发布通知没有什么是不可能的,因为不存在绝对的不可能。说不可能通常意味着几乎不可能。(这类似于数学,我们也说趋于无穷大,因为还没有人实现它)。
为了使其工作,您需要以某种方式将您的应用程序绑定到Google Play 服务,但您不能这样做,因为 Google 尚未公开任何直接的 API 来执行此操作。唯一可能的方法是使用 FCM ;-)(运气又不好)。因此,唯一可能的方法是使用自定义推送服务构建您自己的自定义 ROM,该服务充当推送服务器的客户端和推送客户端(即您的应用程序)的服务器。
由于上述选项往往是不可能的,因此您必须选择一种解决方法。
WebSocket恶意的,因为它需要通过连接到服务器端点的服务使应用程序在后台运行。(在新的 Android 版本中更难)。AlarmManager。希望你明白了。
| 归档时间: |
|
| 查看次数: |
3948 次 |
| 最近记录: |