不重启设备禁用主页按钮

14

我希望在用户通过OTA安装我的应用程序后,设备的主页按钮将完全无法使用,以便用户无法退出应用程序。我的调查结果如下:

A)我找到了一种通过"mobileconfig"配置文件禁用主页按钮的方法,但需要重启设备,并且用户必须在启动后立即打开我的应用程序。我想在非越狱设备上使用类似私有框架的东西来实现无需重启的操作。请问这对于非越狱设备是否可能?

C)如果无法使用私有框架禁用主页按钮,则是否有办法在设备启动后立即打开应用程序?因为某些越狱应用程序/进程是在启动时加载的。

[注意:我不想将我的应用程序提交到iTunes。]


2
我们需要它进行教育评估。我们使用企业分发证书发布此应用程序,我们的mobileconfig配置文件将在考试结束后自动卸载。 - GauravSTomar
1
我们可以使用 Apple Configurator:受监管的设备来完成此操作,但这将对用户数据造成损害。 - GauravSTomar
我认为这个问题没有解决方案。如果有的话,Cydia 就会带来那些类型的调整。 - jogi47
我不明白的是,为什么你说苹果配置器会对用户数据造成伤害。 - Tivie
您实际想要什么?在应用程序中禁用设备的主页按钮还是其他任何东西? - Chintan Khetiya
显示剩余2条评论
4个回答

19

iOS6中有一个名为“引导访问”的功能,它可以让设备所有者将用户(如幼儿和学童)锁定在应用程序中。

这个句子解释了iOS 6 应用的引导访问


2
谢谢您的建议,但我想从我的应用程序中实现相同的功能。Guided Access目前还没有可供使用的API或框架。 - GauravSTomar
@Rajneesh071,http://meta.stackexchange.com/questions/16065/how-does-the-bounty-system-work - iDev

1

如果您能够越狱您的设备,请创建一个LaunchDaemon或使用现有的LaunchDaemon。LaunchDaemon是一个以plist格式呈现的文件,它在重新启动和启动设备时被调用。您还需要一个名为open的文件,由K3A创建。

这里下载open

您需要将open移动到/usr/bin/,或者您可以将其放在您的应用程序中,但无论如何都要设置权限为0755和root:wheel

现在进入LaunchDaemons,它们存储在这里

/System/Library/LaunchDaemons

这里有一个例子。 假设您将LaunchDaemon命名为

com.gauravstomar.test.plist

com.bundle.identifier处填写您的应用程序标识符,您也可以在应用程序目录中的Info.plist中找到它,在那里找到CFBundleIdentifier

现在在plist中插入以下信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.gauravstomar.test</string>
    <key>ProgramArguments</key>
        <array>
          <string>open</string>
          <string>com.bundle.identifier</string>
        </array>
    <key>RunAtLoad</key>
    <true/>
        <key>StartInterval</key>
        <integer>1</integer>
</dict>
</plist>

确保您的LaunchDaemon权限设置为

0644 root:wheel

您仍然可以使用您的mobileconfig来禁用主页按钮。一旦评估完成,您可以使用以下命令禁用LaunchDaemon,以便应用程序停止自动重新启动:

launchctl unload/System/Library/LaunchDaemon/com.gauravstomar.plist

如果您需要更多帮助,请告诉我。


我们不想要越狱解决方案 :( - GauravSTomar
因为我们需要按需发布到用户设备上。 - GauravSTomar

1
这个问题的官方答案是:“您无法在iOS设备中禁用主页按钮,因为它是操作系统级别的架构,您没有授权进行此操作。”
您需要深入操作系统流程才能进行任何更改,这可能会非常困难。
嗯,如果您从不同角度看待这个问题,那么在iOS 6中有一个称为“引导访问”的开放和简单的解决方案。

3
我们可以通过“mobileconfig”配置文件来实现这一点,但需要重新启动设备并在启动后立即打开指定的应用程序。这不是我们想要的合适解决方案,我们希望在不重新启动设备的情况下完成此操作,我认为这可以通过私有框架(Springboard等)实现。 - GauravSTomar

0

没有越狱,应用程序是沙盒化的。该应用程序根本无法访问主页按钮。而且你真的不应该去碰主页按钮。

除了“引导访问”之外,您还可以利用“限制”,这将允许您禁用除打开您的应用程序之外的所有内容。您可以禁用包括Safari在内的苹果特定应用程序,并防止用户安装应用程序、删除应用程序、进行购买等等...

我们有许多iPod触摸设备,上面安装了一个门票扫描应用程序,我们将其出租给客户使用。我们利用“限制”来禁用除我们的应用程序之外的所有内容。到目前为止,最有帮助的限制是防止人们删除应用程序——令人难以置信的是,即使在警告提示后,仍有很多人会意外删除应用程序。


如果我没记错的话,你是通过一个移动配置文件实现的吧? - GauravSTomar
我们只需手动在“设置”->“通用”->“限制”中进行设置。 - Luke
我们希望从我们的应用程序中进行操作。 - GauravSTomar

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