【问题标题】:Disable home button without rebooting device在不重启设备的情况下禁用主页按钮
【发布时间】:2012-10-19 10:02:01
【问题描述】:

我希望从 OTA 安装我的应用程序后,设备的主页按钮将完全不起作用,因此用户无法从应用程序中退出。我的挖掘导致我得到以下结果

A) 我有一种方法可以通过 "mobileconfig" 配置文件禁用主页按钮,但它需要重新启动设备,并且用户必须在启动后立即打开我的应用程序,我想这样做而不用像 Private Frameworks 这样的东西重新启动非越狱设备。我想知道非越狱设备是否有可能?

C) 如果无法使用 Private Frameworks 禁用主页按钮,那么有什么方法可以在启动设备后立即打开应用程序?因为某些越狱应用程序/进程会在启动时加载。

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

【问题讨论】:

  • 这款应用的目标用户是谁?无论应用商店如何,禁用主页按钮都会让用户认为他们的设备行为异常/损坏。
  • 我们需要它来进行教育评估。我们使用企业分发证书发布此应用程序,我们的 mobileconfig 配置文件将在检查结束后自动卸载。
  • 我们可以使用 Apple Configurator: Supervised Devices 来做到这一点,但它会对用户数据造成损害。
  • 我认为问题没有任何解决方案。如果是的话,cydia 会附带这些类型的调整
  • 我不明白为什么你说 Apple Configurator 会对用户数据造成损害。

标签: iphone objective-c ios


【解决方案1】:

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

这解释了the Guided Access for iOS 6 apps

【讨论】:

【解决方案2】:

这个问题的官方回答是“你不能在 ios 设备中禁用主页按钮,它是操作系统级别的架构,你没有被授权。”

您需要深入了解操作系统流程以进行任何可能非常困难的更改。

好吧,如果你改变了你的视线,那么在 ios 6 中有一个开放且简单的解决方案,称为引导访问。

【讨论】:

  • 我们可以通过“mobileconfig”配置文件来做到这一点,但它需要重新启动设备并在启动后打开指定的应用程序。这不是我们想要在不重新启动的情况下执行此操作的正确解决方案,我认为这可以通过私有框架(Springboard 等)实现。
【解决方案3】:

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

here下载open

您需要将 open 移动到 /usr/bin/ 或者您可以将其放在您的应用程序中,但将权限设置为 0755 and 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.plist 同名,不包括 plist 扩展名

ProgramArguments 调用文件打开并启动应用程序

RunAtLoad 使这个 plist 在重启时启动

如果用户退出应用程序,StartInterval 将使 LaunchDaemon.plist 在 1 秒后重新打开,如果用户仍在应用程序中,则不会发生任何事情

确保您的 LaunchDaemon 的权限设置为

0644 root:wheel

您仍然可以使用 mobileconfig 来禁用主页按钮。评估完成后,您可以禁用 LaunchDaemon,以便应用程序停止使用以下命令重新启动自身 launchctl unload/System/Library/LaunchDaemon/com.gauravstomar.plist

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

【讨论】:

  • 我们不想要越狱解决方案 :(
  • 因为我们需要临时将其发布到用户设备
【解决方案4】:

如果没有越狱,应用就会被沙盒化。该应用程序根本无法使用主页按钮。而且你真的不应该弄乱主页按钮。

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

我们向客户出租了许多带有票证扫描应用程序的 iPod touch。我们利用“限制”来禁用除我们的应用程序之外的所有内容。迄今为止最有用的限制是防止人们删除应用程序 - 令人难以置信的是,有多少人会意外删除应用程序,即使在警告提示之后也是如此。

【讨论】:

  • 如果我没记错的话,您是通过移动配置文件实现的吗?
  • 我们只是从设置 -> 常规 -> 限制中手动设置。
  • 我们想从我们的应用程序中做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多