不使用互联网,wifi,APNS和苹果推送通知服务器

时间:2017-07-22 05:50:46

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

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

Scanario

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

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

2 个答案:

答案 0 :(得分:2)

如果您的网络中有服务器,则可以使用后台提取Apple documentation)和本地通知的组合来实现此类功能包含显示通知所需的信息。从概念上讲,这将是这样的:

  1. 使用后台获取功能设置应用程序以定期从内部网络内的服务器获取数据。
  2. 当服务器向您发送应通知用户的信息时,请显示本地通知。
  3. 但是,这种方法要记住三件事。

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

    编辑:例如:

    1. 在项目设置中,启用功能 - >背景模式 - >后台提取
    2. AppDelegate.didFinishWithLaunchOptions方法中设置最小间隔,例如:
    3. UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

      1. 在AppDelegate中实现处理程序方法:
      2. 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

答案 1 :(得分:0)

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

Example for Android