首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何硬编码CFBundleIdentifier?

如何硬编码CFBundleIdentifier?
EN

Stack Overflow用户
提问于 2011-01-07 20:34:23
回答 1查看 1.2K关注 0票数 1

我还能说什么,我如何在应用程序中硬编码CFBundleIdentifier?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-07 21:23:06

如果您想在运行时更改CFBundleIdentifier,则除非写入应用程序包Info.plist,否则无法更改。这是不好的做法,因为应用程序包可能已被移动到只读卷,或者其写入权限受到系统管理员的限制,或者进行了数字签名以避免篡改。我猜Launch Services不会立即识别这一变化,应用程序将不得不重启。此外,这也是Mac Apple Store拒绝的一个原因。

另一方面,如果你想检测CFBundleIdentifier的篡改,你总是可以在应用程序启动时读取它的值,例如在applicationDidFinishLaunching

代码语言:javascript
复制
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
    NSString *bundleId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
    if (! [bundleId isEqualToString:@"com.yourcompany.yourapp"])
    {
        // Ooops, CFBundleIdentifier doesn’t match
    }
}

根据您的要求,您可能希望对上面的代码进行模糊处理,包括文字字符串。然而,一般来说,你不能阻止一个顽固的对手。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4625482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档