是的,您可以这样做。这只是修改应用的Info.plist文件(也许重新启动)的问题。
在越狱设备上,修改App Store应用程序的Info.plist文件不会导致应用程序签名出现问题。
我想你可能试图找到一种方法来做到这一点编程,但老实说,我不知道任何超过脚本是必需的。你只是做一次性修改,对吧?所以,对我而言,这听起来像是简单地编写了这个修改脚本,并将它放在你的“调整”包DEBIAN/preinst
或DEBIAN/postinst
文件中就足够了。
我有几个想法:
默认情况下,你的Info.plist文件将是二进制的,这使得它更难编辑(通过脚本)。从您的应用程序的.app
目录内
plutil -convert xml1 Info.plist
:这可以很容易地通过修改plist文件之前发出此命令工作围绕。这会将Info.plist作为文本文件。如果您没有plutil
,请告诉我,我可以追查哪些Cydia软件包包含它。
注意:编辑后,您不必将plist转换回二进制文件。文本plists也是有效的。
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来做到这一点,我也不会感到惊讶,如果有不。我很难想象苹果会这样做的原因,如果他们没有理由这样做,那么可能没有API(公共或私有)。通常情况下,你决定UIBackgroundModes
在编译时间。
再次感谢您提供另一个惊人的完整和翔实的答案,超越了大多数答案提供的答案。 – newenglander
@newenglander,不客气。请注意我在第1节中添加的“注释”。 – Nate
这是一个私人API。 Apple使用它来运行可随时启动的系统进程,但不要使用APNS服务。 –