无需使用互联网、wifi、APNS 和苹果推送通知服务器即可推送通知

Posted

技术标签:

【中文标题】无需使用互联网、wifi、APNS 和苹果推送通知服务器即可推送通知【英文标题】:Push Notification without using internet,wifi,APNS and apple push notification server 【发布时间】:2017-07-22 05:50:45 【问题描述】:

我需要编写一个 ios 应用程序,让一些 IOS 设备在没有外部 Internet 连接的情况下相互发送本地通知(不使用 APNS——苹果推送通知服务器)。环境将是一个带有专用服务器的私有内部 WIFI 网络......

扫描仪

我们在银行办公室工作 所有 14 人都在使用 iPhone 人 A 向其余 13 人发送通知 所有人都会收到通知 组中的一个人(例如,H 人)回复 A 可以收到 H 的回复 不是外部互联网 所有的 iPhone 我们拥有的是一个由服务器设置的私人 wifi 网络。完全没有链接到外部世界..没有链接到外部互联网

如果有可能在 ios 应用程序中。使用 swift 3.0。如果可能的话,请您指导我。

【问题讨论】:

***.com/questions/16318311/… 可能有帮助 This tutorial 可能会有所帮助..!它有点旧,但您可能会得到一些关于设备到设备通信的提示。 想到的最佳解决方案是多点连接。如果您都在同一个 wifi 上工作,但应用程序需要在所有设备上运行,您可以通过自定义消息处理类处理传入的消息。 【参考方案1】:

如果您的网络中有一个包含显示通知所需的信息。从概念上讲,这将像这样工作:

    将应用设置为使用后台获取功能定期从内部网络中的服务器获取数据。 当服务器向您发送应通知用户的信息时,显示本地通知。

不过,在这种方法中需要记住三件事。

如果您的应用未在后台运行,则它不会收到通知,也就是说,您的用户需要记住让应用在后台运行。 后台数据获取并不完全可靠,Apple 可能不会按时触发它,即。当设备处于省电模式时。这可能适合您的用例,也可能不适合(您想对其进行测试)。 您需要测试您的 iPhone 在进入睡眠模式时是否与 wifi 断开连接;否则你的后台获取逻辑将不起作用。

编辑:例如这样:

    在项目设置中,启用 Capabilities -> Background Modes -> Background fetch 在AppDelegate.didFinishWithLaunchOptions 方法中设置最小间隔,例如:

UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

    在 AppDelegate 中实现处理程序方法:

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping 
(UIBackgroundFetchResult) -> Void 
    fetchData()  data in 
         if data.needsToBeNotified 
             sendLocalNotification()
         
         completionHandler(.newData)
    


RayWenderlich 有一个很好的关于背景模式的教程:https://www.raywenderlich.com/143128/background-modes-tutorial-getting-started

【讨论】:

@Monica 您可以查看快速指南参考swifting.io/blog/2016/08/22/23-notifications-in-ios-10,详细了解请查看 Apple 从 iOS 10 提供的全新 userNotification 框架。 @Mounica 我添加了一些关于如何开始的示例代码,以及更详细的后台模式教程的链接。 @satelink 非常感谢.. :)【参考方案2】:

该场景可以在 Wi-Fi 网络中使用 MQTT 协议来解决。您必须在网络中设置一个 MQTT 代理并在您的 iOs 应用程序中创建一个 MQTT 客户端。您可以将 MQTT 客户端订阅到与 GCM 工作相同的主题上的 MQTT 代理,并使用 MQTT 代理向 MQTT 客户端订阅的主题发送推送通知。

Example for android

【讨论】:

以上是关于无需使用互联网、wifi、APNS 和苹果推送通知服务器即可推送通知的主要内容,如果未能解决你的问题,请参考以下文章

14 - 苹果远程推送原理

带有 APNS 锐利的苹果推送通知

如何从 iOS 应用程序确定正在使用哪个苹果推送通知服务器 (APNS)

ZPush--基于netty4实现的苹果通知推送服务(APNs)Javaclient

即使我没有在我的应用程序中使用 APNS,来自苹果的 APNS 警告

苹果推送通知服务