19

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

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

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

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

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

4

5 回答 5

7

E.g. an on premises push notification service that can be used to send a notification to a users phone based on an event that is triggered by our server?

With respect to Android, the answer is "not really". Your options are:

  • Implement your "push" mechanism in the form of some message queue, where the devices poll looking for messages every so often, or

  • Use a WakeLock and WifiLock to keep the device (and WiFi) powered on constantly, then use something like MQTT for the push message

Either of these will be bad for the battery, though the first one is more configurable in terms of power drain (e.g., if you only check for messages once per hour, it won't be bad).

The reason why GCM can keep the power drain low is because of special hooks for mobile data connections within the OS and chipset, such that the CPU can power down while retaining an open socket connection to the push server, where incoming packets from that server will wake up the device. This is not available for WiFi.

于 2013-07-02T11:07:15.053 回答
5

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

本地通知 iOS

于 2013-07-02T11:11:51.517 回答
2

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

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

于 2020-09-18T07:38:41.873 回答
1

你可能早就解决或放弃了你的具体问题。但作为参考,iOS 多年来一直在发展,现在支持您描述的确切类型的 VOIP 功能。

Internet 协议语音 (VoIP) 应用程序允许用户使用 Internet 连接而不是设备的蜂窝服务拨打电话。这样的应用程序需要保持与其关联服务的持久网络连接,以便它可以接收来电和其他相关数据。该系统不是让 VoIP 应用程序一直处于唤醒状态,而是允许它们被暂停并为它们提供监控其套接字的设施。当检测到传入流量时,系统会唤醒 VoIP 应用程序并将其套接字的控制权返回给它。

于 2017-04-05T17:15:50.657 回答
-2

在其他地方回答过这个问题,但这个问题比较老

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

您可以在我的回答中找到解决方法选项列表

于 2021-04-04T12:17:58.970 回答