iOS - 在后台使用应用程序监听网络连接更改

时间:2016-02-01 20:37:56

标签: ios xamarin connection location wifi

我认为可能没有办法用Apple如何限制他们的开发人员,但我想听到网络连接更改(wifi连接/断开连接),即使应用程序在后台或闭合。

我的应用程序(适用于iOS和Android)允许用户使用地理围栏来跟踪他们的位置,以便某些事件在他们离开或进入他们的家时触发。我可以在iOS中使用CLLocationManagerCLCircularRegion执行此操作。这一切都很好,但我想给用户一个额外的选项,跟踪他们的wifi连接,以确定何时触发离开和输入事件。这样,偏执的用户(像我一样)可以在他们进入和离开他们的家时触发事件,而不需要位置服务。

我想要做的是让应用程序在设备连接或断开无线网络时触发事件。当事件发生时,我想从该网络获取信息,例如无线接入点的MAC,以便我可以可靠地确定他们是否连接到他们的家庭网络,以便我可以根据什么确定他们是否在家。他们设置了家庭wifi。

我很确定你可以在Android上做到这一点,但iOS我不太确定。我发现的所有相关内容都要求应用程序正在运行。即使在应用程序关闭或在后台运行时,无论何时发生wifi连接更改,都必须触发该事件。该应用程序是用Xamarin(C#)编写的,但Objective-C代码是可以接受的。

有没有办法在iOS上执行此操作?

3 个答案:

答案 0 :(得分:1)

不,Apple目前不支持在连接发生变化时触发和收听。

Table 3-1中的their official documentation所示,您可以看到允许以long-running background task运行的内容,这就是您想要的内容。

答案 1 :(得分:1)

听到WiFi连接/断开事件可以在Android上完成,而不是在iOS上,我真的很烦恼。所以我向Apple发送了开发者支持请求。这是他们回应的一部分:

  

没有支持在后台检测WiFi事件的方法。

他们继续告诉我,使用区域监控是可行的方法,等等等等。不是一个可接受的解决方案,因为整个想法是消除了启用位置服务的需要,但是很好。

所以你可以从Apple自己那里得到它。目前,您无法通过iOS进行此操作。

答案 2 :(得分:-1)

也许this medium-post可能会有所帮助:Sauvik Dolui描述了如何生成基于Swift的网络连接侦听器。