在iOS中以编程方式切换飞行模式

14
I希望在iOS中以编程方式打开/关闭飞行模式。 在谷歌搜索后,我找到了以下链接,并按照它们的指示进行操作, Reachability airplane mode (3G) vs. Wifi Using Private Framework: Importing RadioPreferences.h Detect if iPhone is in Airplane mode? 所有上述链接都告诉我使用AppSupport.framework和RadiosPreferences.h。 这为我提供了有关飞行模式是否打开或关闭的状态,但这并不能让我更改飞行模式。

我看到了这个链接,如何使用私有API在IOS 5.1中打开/关闭飞行模式, 它告诉我切换飞行模式的方法,但是它使用了entitlements,只适用于越狱设备。有没有办法以编程方式设置飞行模式(可以使用私有API但不是entitlements)。


5
我认为以编程方式改变模式的可能性非常小,因为这种无需用户交互就能改变模式的方式与苹果公司的工作方式不太相符。 用户可能会想知道为什么他的互联网或接听电话的功能突然停止工作。 - Wolfgang Schreurs
1
我认为你可能能够实现的最好的方式是显示一个通知,引导用户(例如通过按按钮)到飞行模式设置,然后用户仍然需要手动更改设置。显然,您可以使用Siri打开飞行模式设置屏幕:http://forums.imore.com/siri/223832-use-siri-access-system-preferences.html - Wolfgang Schreurs
1
检查这个答案:https://dev59.com/10fRa4cB1Zd3GeqP8Vyj - Ashish Kakkad
我已经检查过那个答案了,"不可能"不是任何问题的答案。在旧版本中也是可能的,因此应该有一些东西可以允许我们以编程方式切换飞行模式(也许它不会允许我们将该应用程序放在AppStore上)。 - Mehul Thakkar
使用授权是给您的应用程序授予权限与应用程序沙盒之外的任何内容进行交互的唯一方法。(iCloud、Passbook、Game Center等)否则,这将是一个安全漏洞,没有其他方法可以绕过它。访问系统设置也是一样,您需要一个授权。唯一的区别是这个授权对于普通应用程序不可用,因此需要越狱。您所要求的是不可能的,而且有很好的理由。 - Brandon Schlenker
显示剩余2条评论
2个回答

5

每一个App Store应用程序都是有权限的沙盒。

如果您想在App Store中分发您的应用程序,那么您想要实现的目标根本不可能。您的应用程序根本无法获得足够的特权来实现任何类似的功能。您不能设置更改系统行为的全局设置。苹果永远不会允许这样做。

最好的情况是,您可以通过网络可达性监视网络连接状态,但这基本上就是这样了。使用私有API = 直接应用程序拒绝。


7
就像我之前提到的,我想使用私有API,这显然意味着我不想将它放在App Store上,因此也就避免了被驳回的问题。 - Mehul Thakkar
我看了这个视频,其中一个人说这个应用程序可以打开/关闭飞行模式,他正在使用IOS:https://www.youtube.com/watch?v=ZcjtEKNP05c。这是假的还是什么? - android developer

-4

如果你不关心AppStore的提交,而且你的设备越狱了(iOS 7.0.4及以下版本是可以越狱的),那么你可以按照以下确切的步骤来编程地打开或关闭飞行模式。我还附加了一个示例项目,以使事情变得更容易。

  1. 下载(https://iosopendev.googlecode.com/files/iOSOpenDev-1.6-2.pkg)并安装,这将安装必要的工具,以便直接在苹果应用程序所在的位置安装应用程序。这是必需的,以便您拥有适当的访问和权限。

  2. 使用Cydia在设备上安装OpenSSH。然后按照此教程操作:(http://www.priyaontech.com/2012/01/ssh-into-your-jailbroken-idevice-without-a-password/),以启用无密码访问(使用SSH密钥)。

  3. 从这里下载我创建的示例项目:(https://www.dropbox.com/s/c0i76vmtfckvsut/ToggleAirplane.zip)。该项目使用与苹果的SpringBoard应用程序(控制主屏幕的应用程序)相同的权限。因此,您将拥有对每个设置的访问权限。您只需要知道如何以编程方式调用它。

  4. 在构建设置中,转到“用户定义”部分,并编辑键iOSOpenDevDevice的值为您设备的IP地址。

  5. 现在最棒的部分。按Command + Shift + I。这将安装并重新启动您的设备。

  6. 但是,您可能看不到应用程序。要查看它,请从Cydia下载Respring应用程序。启动时,它将重新启动设备。您应该能够在主屏幕上看到应用程序“ToggleAirplane”。

注意:您无法像无法删除Apple的应用程序一样从主屏幕中删除它。要删除它,您需要前往Cydia-> Packages。找到该应用程序并卸载。

我不想使用动态库,因为我已经知道这种方法并且已经完成了,但是正如我在问题中明确提到的(最后一行),我不想使用越狱解决方案,我可以使用私有框架。 - Mehul Thakkar
1
我知道这是一个旧答案,但我想知道您是否可以重新上传ToggleAirplane示例项目。谢谢! - Nahum G
1
请不要在此处回答问题而不提供您的帖子中关键要素。您已经提供了一个解决方案,链接到一个不再存在于该链接的Dropbox项目。这使得这个答案没有用处。 - Nate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接