是的,您可以这样做。只需修改应用程序的 Info.plist 文件(并可能重新启动)即可。
在越狱设备上,修改 App Store 应用的 Info.plist 文件不会导致应用签名出现问题。
我想您可以尝试找到一种以编程方式执行此操作的方法,但老实说,我不知道除了脚本之外还需要其他任何东西。你只是在做一次修改,对吧?所以,对我来说,这听起来像是简单地编写这个修改的脚本,并将它放在你的“tweak”包的DEBIAN/preinst 或DEBIAN/postinst 文件中就足够了。
我有几个想法:
1. 默认情况下,您的 Info.plist 文件将是二进制文件,这使得编辑(通过脚本)变得更加困难。这可以通过在修改 plist 文件之前发出此命令来轻松解决:
plutil -convert xml1 Info.plist
在您应用的 .app 目录中。这会将 Info.plist 保留为文本文件。如果你没有plutil,请告诉我,我可以追踪哪个 Cydia 包包含它。
注意:您不必在编辑后将 plist 转换回二进制文件。文本 plist 也是有效的。
2. 您可以选择将修改后的 Info.plist 与您的 Debian 软件包捆绑在一起,并简单地将 App Store 版本替换为调整后的版本。但是,您必须担心版本号以及该文件中您使用新版本更新的任何其他属性。在这种情况下,仅将 一个 版本的 Info.plist 复制到 .app 目录可能不适用于所有版本。因此,您可能需要检测您拥有的版本,或者在 plist 文件中搜索
<key>UIBackgroundModes</key>
并在此处插入 VOIP 模式。我不擅长使用sed 和awk 之类的工具,如果您需要这部分的帮助,您可能可以在这里提出一个简单的脚本问题......我知道iOS......脚本......不太这样:)
3.如果您的脚本出于某种原因需要检测 Info.plist 中的应用版本,则此命令行将执行此操作:
plutil -key CFBundleVersion Info.plist
注意:虽然可能有专用 API 来执行此操作,但如果有 没有,我也不会感到惊讶。我很难想象 Apple 会看到这样做的原因,如果他们没有看到这样做的理由,可能没有 API(公共或私有)。通常,您在编译时决定UIBackgroundModes。