如何在没有用户互动的情况下禁用wifi协助

时间:2018-04-10 12:46:18

标签: ios wifi mdm configuration-profile wifi-assist

我有几个网址必须通过wifi而不是移动数据来编程(编程)。

WIFI ASSIST 启用时,只要wifi无效,数据包就会通过移动数据传输。

我想阻止这种情况发生。

就我研究而言,没有API以编程方式打开和关闭开关

我可以在Reachability Class的帮助下找到用户是否有移动数据和wifi,我相信我可以提醒用户保持wifi协助关闭,但这是一个非常糟糕的用户体验。

所以我决定看看是否可以在 iOS移动配置文件的帮助下完成。

但是我在Apple配置文件参考中找不到与wifi-assist相关的任何键。

所以我想知道,是否可以强制将wifi用于某些网址。

我记得这可以通过VPN ON DEMAND实现,我们可以通过VPN访问某些域。

我想知道wifi是否也可以通过配置文件

欢迎任何建议。

3 个答案:

答案 0 :(得分:3)

正如其他人所提到的,在iOS中无法以编程方式操作此设置。这不是你要问的,因为你似乎已经知道答案是“不”。

您正在询问配置文件,因此我假设这些是受管设备。遗憾的是,我所知道的配置文件有效负载没有强制托管设备禁用Wi-Fi协助。

但是,我相信你的意图与被问到的意图有点不同。我认为你基本上有一个应用程序可以与只能通过Wi-Fi网络(可能是企业Wi-Fi网络)访问的资源进行通信。如果应用尝试在蜂窝电话上连接到资源,则无法连接。在某些情况下,当Wi-Fi信号较弱时,设备会尝试提供帮助并切换到蜂窝电话,从而导致应用程序出现问题。如果我们能够找到一种方法来强制iOS在您的应用运行时不利用Wi-Fi Assist,那么您将处于良好状态。

如果您可以将此应用安装为托管应用,则可以通过某种方式确定应该只允许该应用在Wi-Fi连接上运行。将网络使用规则AllowCellularData设置为false应执行此操作(有关详细信息,请参阅this)。我不确定这个解决方案的一个原因是,当Wi-Fi Assist打开并激活时,这是否会导致连接失败,或者是否让iOS更喜欢在应用运行时不使用Wi-Fi协助,因为它无法通过手机连接。所以我认为你可以告诉一个应用程序只通过WiFi连接,但它并没有真正为你的用户体验问题提供更好的解决方案。唯一认为它真正购买的是你的应用程序连接在连接到手机时不会尝试连接。但是,如果您将应用程序包ID的此值更改为false,则可能会阻止在应用程序运行时启用Wi-Fi Assist。我无法访问MDM来试用它,但您可以测试并查看。

最终,鉴于这可能是企业设备的情况,我认为您将不得不通过用户培训来解决这个问题。好消息是这是一次性的。当然,当Wi-Fi信号较弱但是信元信号很强时,用户可能会略微降低网络性能。如果这些企业应用程序主要仅在公司的Wi-Fi网络上运行,那么这并不重要。

您提到的另一种解决方案是,基本上使用按需VPN来提供与内部资源的连接。这是额外的基础设施工作,你已经提到过,所以我不确定它是否是一个选项。

显然,另一种解决方案是通过防火墙公开网络资源,这可以让您通过蜂窝网络访问它。我怀疑由于安全限制,这是不可能的。

不幸的是,这个领域没有很多好的选择。然而,希望有一些方法可以做到这一点,因为Sonos似乎已经做了一些事情 允许他们的应用在流式传输到本地网络资源时避免切换到WiFi协助:https://sonos.custhelp.com/app/answers/detail/a_id/4257/~/wi-fi-assist-and-sonos

我想知道您是否可以让您的应用打开与固定本地网络资源的流式音频连接,这会导致其使用Wi-Fi。这是一个非常疯狂的黑客攻击,但是具有足够低的比特率音频文件流,它可以做你需要的,同时不会占用过多的网络吞吐量。

根据Apple的notes on Wi-Fi Assist

  • 如果您是数据,则Wi-Fi Assist不会自动切换到手机 漫游。
  • Wi-Fi Assist仅在您运行应用时才有效 前台并没有激活后台下载 内容。
  • 使用某些第三方应用无法激活Wi-Fi Assist 流音频或视频,或下载附件,如电子邮件 应用,因为他们可能会使用大量数据。

当然,您可以考虑的另一个可能的解决方案是改善您的Wi-Fi覆盖范围,使得信号不会变得足够糟糕,无法满足Wi-Fi协助。我知道这可能不太可行,但想把它放在那里。

祝你好运!

答案 1 :(得分:1)

没有允许您启用/禁用“Wi-Fi Assist”的公共API,即使您找到了解决方法,您的应用也会被拒绝。

答案 2 :(得分:0)

否则您无法通过编程方式启用或禁用WiFi,并且没有此API。