在关闭的WiFi网络上向iOS/Android发送推送通知(无互联网连接)



我想创建一个应用程序,用户可以在有NOGSM/3G或任何类型的手机接收的区域/场所使用。我们也只提供一个没有互联网上行链路的封闭WiFi网络,所以它是一个局域网,设备(PC和智能手机)可以在这里相互通信,但不能与外界通信(不要问为什么:)

用户将被要求在到达会场之前下载该应用程序。

我的应用程序需要能够接收推送通知,但当然无法访问苹果的APNS或谷歌云消息服务。然而,该应用程序确实通过IP注册到我们局域网上的中央服务器。(当用户连接到WiFi网络并且我们有属于注册电话的电话号码时,它就会登录。)

现在我的问题是:当事件被触发,应用程序需要在不使用或连接苹果或谷歌的在线通知服务的情况下唤醒时,有没有办法发送推送通知??例如,可用于根据我们的服务器触发的事件向用户手机发送通知的本地推送通知服务?
有什么建议吗?

更新:为了澄清,这是一个简单的VoiP应用程序,它连接到我们的sip服务器,让用户相互呼叫,因此两个呼叫需要相当实时地连接。但显然,你只能通过推送通知唤醒应用程序,因此需要互联网。

例如,可用于根据我们的服务器触发的事件向用户手机发送通知的本地推送通知服务?

对于安卓系统,答案是"不是真的"。您的选择是:

  • 以消息队列的形式实现您的"推送"机制,设备每隔一段时间就会轮询一次消息,或者

  • 使用WakeLockWifiLock保持设备(和WiFi)持续通电,然后对推送消息使用类似MQTT的东西

这两种情况中的任何一种都会对电池不利,尽管第一种在功耗方面更具可配置性(例如,如果你每小时只检查一次消息,那就不会有什么问题)。

GCM之所以能保持低功耗,是因为操作系统和芯片组中的移动数据连接有特殊的挂钩,这样CPU就可以断电,同时保持与推送服务器的开放插座连接,来自该服务器的传入数据包会唤醒设备。这不适用于WiFi。

对于iOS,答案是否定的。如果不使用苹果的APNS服务器,您就无法推送通知设备。您唯一的选择是通过WiFi在设备上以其他方式触发本地通知,尽管您仍然需要保持设备清醒才能接收这些通知,或者可能添加VOIP服务或其他兼容服务以允许连续的后台处理。

本地通知iOS

在iOS 14 中添加的本地网络上接收语音和文本通信

参考Apple文档:https://developer.apple.com/documentation/networkextension/local_push_connectivity/receiving_voice_and_text_communications_on_a_local_network

您可能早就解决或放弃了您的特定问题。但作为参考,iOS经过多年的发展,现在支持您所描述的确切类型的VOIP功能。

互联网语音(VoIP)应用程序允许用户使用Internet连接而不是设备的蜂窝服务。这样的应用程序需要维护持久的网络与其关联服务的连接,以便它可以接收传入呼叫和其他相关数据。而不是让VoIP应用程序全部保持清醒此时,系统允许它们暂停并提供为他们监控插座的设施。传入时检测到流量,系统唤醒VoIP应用程序并返回

我在其他地方回答了这个问题,但这个问题是旧的

没有。没有互联网,就不可能刺激操作系统推送通知触发系统手动独立于官方操作系统供应商基础设施。

你可以在我的答案上找到一个变通方法选项列表

最新更新