使用私有 API 强制 iOS 应用程序在前台打开

Force iOS app to open in foreground using private APIs

我目前正在开发一个自助服务终端类型的应用程序,不会在 App Store 上发布。设备有时会需要切换应用程序来处理一些其他任务,但在用户没有手动切换回来的情况下,我需要我的应用程序在经过一段设定的时间后回到前台。

我们无法控制其他应用程序,因此无法让它们在超时后切换到我们的应用程序。

我知道这不能通过官方途径完成,但我想问问有没有人知道private API 我可以在预定的通知中调用,该通知将把我的应用程序置于前台。

我有一种感觉,由于应用程序的沙盒性质,如果没有越狱就无法完成,因为没有办法向设备上启动应用程序的任何服务发送消息。尽管它 应该 是可能的,因为 Apple 商店中的演示设备可以在离开时恢复到演示 "screensaver" 应用程序一个人待一会儿。他们正在做什么来实现这一目标?

如果有越狱黑客可以让它工作或配置或 MDM 服务可以处理的东西,我很乐意尝试一下。

同样,这是针对 私人应用程序 不会 在 App Store 上分发。该应用程序将放置在我们大楼各处的设备上和我们内部网络上的运行。

通过越狱,您可以查看类似 AutoLaunch 的内容:

If you use a particular app that seems to crash here and there, then a new free jailbreak tweak called AutoLaunch could be your next best friend. It can automatically re-launch any app that crashes on your device so you don’t have to re-launch it yourself.

http://www.idownloadblog.com/2017/01/08/autolaunch/

不确定无论是否崩溃,您对启动的控制有多大。您或许可以要求作者提供源代码或与他合作以获得您想要的结果。

更新:

它是开源的:

https://github.com/chenzhijie/autolaunch

进一步检查 source 后,它似乎使用以下内容在崩溃后启动应用程序:

int createSubProcessResult = fork();
if(createSubProcessResult == 0) {
   execl("/usr/bin/open","open",[currentAppBundleId UTF8String],NULL);
}

我想您可以推出自己的 Autolaunch 版本,并将其 wait/subscribe 用于删除命令,该命令将 launch/switch 不同的应用程序。