ios - 是否可以修改 iOS 应用程序的主包?

标签 ios security ios4 nsbundle

我想提供两个版本的 iOS 应用:付费版和免费版(带广告)。我的目标是保持代码库相同,仅更改一个标志来指示我要构建哪个版本。

我已经为我的应用程序准备了两个构建目标来支持这种分离,如here所述。 。这些目标的捆绑 ID 有所不同。

现在,我想根据给定的 bundle ID 更改标志。我尝试读取主包标识符,效果很好。我的问题从这里开始。

下载免费应用程序后是否可以更改主 bundle ID,以未经授权访问付费版本?我发现here , herehere事实并非如此。

但是...越狱手机怎么办?我读过一些评论,确实如此。

如果是这样,我如何保护我的应用程序?

我也在考虑定义像#define FREE_APP这样的预处理器指令。然后我会检查:

#ifdef FREE_APP
    //show ads
#endif

但是这个解决方案不能仅仅通过选择构建来完全自动化 - 我仍然需要手动更改这个值 - 所以它不是最好的。将不胜感激您的建议。

最佳答案

直接回答你的问题,几乎可以肯定是的。但我认为这并不重要。

想要盗版您的应用程序的人可能只会等到有人购买并破解您的付费应用程序;我怀疑他们会经历破解您的免费版本的麻烦。

就我个人而言,我的项目有两个目标。这两个应用程序具有不同的 Info.plist,免费版本在build设置中具有 #define。正如您所建议的,在我的代码中,我有很多 #ifdef 。自动化是可能的(但有时会变得有点困惑)。

当然,您的另一个选择是使用 InAppPurchase 升级到完整版本的单个应用程序。只是要小心专利流氓。

关于ios - 是否可以修改 iOS 应用程序的主包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6265951/

相关文章:

ios - 需要从 iOS 中的 NSMutableData 对象中提取 XML 文档

security - 令人惊讶的软件漏洞或漏洞利用?

node.js - 在 Nodejs 中验证并安全地提供 youtube 链接?

ios - 如何在 iOS UBER API 中设置我 future 的行程?

ios - Swift 3 项目中的 Unity 实现:应用程序启动时崩溃 - MetadataCache::Initialize()

c - 如何修复缓冲区溢出返回地址失败?

ios - 获取iOS的root权限

iphone - 从 Iphone App 在 Dropbox 中创建文件夹

iphone - 从照片库获取缩略图

ios - 如何保持 UIScrollView 内容大小的最小高度?