使用Jailbreak tweak / script将新的UIBackgroundMode添加到App-Store应用程序

时间:2013-11-28 09:51:55

标签: ios jailbreak cydia tweak backgrounding

我做了一个App-Store app,现在想调整一下,让它在后台使用VoIP UIBackgroundMode运行(保持套接字打开)。 UIBackgroundModes存储在Info.plist文件中。

在Cydia中为我的应用提供VoIP UIBackgroundMode的最佳方法是什么?它是否只是一个更改应用程序的Info.plist文件的脚本(假设这不会破坏应用程序的签名并导致问题),或者是否有一个我可以通过调整覆盖的函数?

(我假设我可以使用这个UIBackgroundMode(仅在模式实际设置时才执VoIP UIBackgroundMode处于活动状态并被Apple拒绝。删除它后,应用程序被相应的代码接受。)

1 个答案:

答案 0 :(得分:4)

是的,你可以这样做。这只是修改应用程序的Info.plist文件(并可能重新启动)的问题。

在越狱设备上,修改App Store应用的Info.plist文件不会导致应用签名出现问题。

我想你可以尝试找到一种以编程方式进行的方法,但老实说,我不知道除了脚本之外还需要什么。你只是进行一次性修改,对吧?所以,对我来说,这听起来只是简单地编写了这个修改脚本,并将它放在“tweak”包的DEBIAN/preinstDEBIAN/postinst文件中就足够了。

我有几点想法:

1。默认情况下,您的Info.plist文件将是二进制文件,这使得编辑(通过脚本)变得更加困难。通过在修改plist文件之前发出此命令,可以很容易地解决这个问题:

plutil -convert xml1 Info.plist

在您应用的.app目录中。这将把Info.plist留作文本文件。如果您没有plutil,请告诉我,我可以追踪哪个Cydia包中包含它。

注意:编辑后,您不必将plist转换回二进制文件。文本符号也有效。

2. 您可以选择将修改后的Info.plist与Debian软件包捆绑在一起,只需将App Store版本替换为调整版本即可。但是,您必须担心版本号以及使用新版本更新的该文件中的任何其他属性。在这种情况下,简单地将一个版本的Info.plist复制到.app目录可能不适用于所有版本。因此,您可能需要检测您拥有的版本,或者在plist文件中搜索

<key>UIBackgroundModes</key>

并在那里插入VOIP模式。我对sedawk等工具不太满意,如果你需要这方面的帮助,你可能会在这里提出一个简单的脚本问题...我知道iOS ...脚本...不那么:)

3. 如果您的脚本由于某种原因需要在Info.plist中检测应用版本,则此命令行将执行此操作:

plutil -key CFBundleVersion Info.plist 

注意:虽然可能有私有API来执行此操作,但如果,我也不会感到惊讶。我很难想象苹果会看到这样做的原因,如果他们没有理由这样做,那么可能没有API(公共或私人)。通常,您在编译时决定UIBackgroundModes