【问题标题】:Force iOS app to open in foreground using private APIs强制 iOS 应用使用私有 API 在前台打开
【发布时间】:2018-08-23 03:49:42
【问题描述】:

我目前正在开发一个不会在 App Store 上分发的信息亭类型的应用程序。设备有时需要切换应用程序来处理一些其他任务,但在用户不手动切换回来的情况下,我需要我的应用程序在经过设定的时间后进入前台。

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

我知道这不能通过官方方式完成,但我想问是否有人知道私有 API 我可以在预定的通知中调用,该通知将使我的应用程序处于前台。

我有一种感觉,由于应用程序的沙盒性质,如果没有越狱就无法做到这一点,例如,无法向设备上启动应用程序的任何服务发送消息。虽然它应该是可能的,因为如果单独放置一段时间,Apple 商店中的演示设备能够恢复为演示“屏幕保护程序”应用程序。他们正在做什么来实现这一目标?

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

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

【问题讨论】:

  • 没有办法这样做。但是,如果您使用的是 Android 操作系统,就会有解决方案。
  • Apple Store 中的设备不运行标准的 iOS 版本;他们经营着一家“特别”的 Apple Store
  • 你是要唤醒应用还是切换到那个应用
  • 切换到该应用程序@MuhammedAzharudheen
  • @Raptor 如果在 iOS 上没有可能的话,肯定会考虑 Android。

标签: ios swift xcode jailbreak iphone-privateapi


【解决方案1】:

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

如果您使用的某个特定应用程序似乎在这里和那里崩溃,那么名为 AutoLaunch 的新的免费越狱调整可能是您的下一个好朋友。它可以自动重新启动任何在您的设备上崩溃的应用程序,因此您不必自己重新启动它。

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 版本,让它等待/订阅一个删除命令,该命令将启动/切换不同的应用程序。

【讨论】:

  • 这很好,给了我一个起点和一些工作。谢谢。
  • 没问题。如果您愿意,可以考虑接受它作为答案。很高兴我能帮上忙。
  • 我再给它几个小时,在此期间试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 2023-03-21
  • 2012-05-14
  • 1970-01-01
相关资源
最近更新 更多