ios - 不使用互联网、wifi、APNS 和苹果推送通知服务器的推送通知

标签 ios iphone swift push-notification apple-push-notifications

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

扫描仪

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

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

最佳答案

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

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

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

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

编辑:例如像这样:

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

UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

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

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

RayWenderlich 有一个关于背景模式的很好的教程:Apple documentation

关于ios - 不使用互联网、wifi、APNS 和苹果推送通知服务器的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45251178/

相关文章:

ios - 如何声明自定义对象,例如。可编码类中的计时器

ios - Swift - 如何在 iOS 应用中检测 CarPlay 的连接/断开状态?

ios - 如何在 iOS swift 中从 Firebase 远程配置获取整数值?

iphone - 在 UIScrollview 中拖动会增加其 subview 数

ios - 如何调用另一个类中定义的函数?

ios - 更改 UISearchController 中的暗背景

ios - Xcode Storyboard约束和自动布局

iphone - 如何使用 CoreData 进行初始数据配置设置?

PHP 图像调整脚本旋转从 iPhone 相机上传的图像

swift - 使用 IBM Swift Sandbox 和 rangeOfCharacterFromSet