Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何硬编码CbundleIdentifier?_Objective C_Macos - Fatal编程技术网

Objective c 如何硬编码CbundleIdentifier?

Objective c 如何硬编码CbundleIdentifier?,objective-c,macos,Objective C,Macos,我还可以说什么,如何在应用程序中硬编码CbundleIdentifier 谢谢如果您想在运行时更改CbundleIdentifier,除非您写入应用程序包Info.plist。这是一种糟糕的做法,因为应用程序包可能已被移动到只读卷,或者其写入权限受到系统管理员的限制,或者进行了数字签名以避免篡改。我猜Launch Services不会立即识别出这一变化,应用程序必须重新启动。此外,这也是Mac苹果商店拒绝的一个原因 另一方面,如果要检测CFBundleIdentifier的篡改,则始终可以在应用

我还可以说什么,如何在应用程序中硬编码CbundleIdentifier


谢谢

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

另一方面,如果要检测
CFBundleIdentifier
的篡改,则始终可以在应用程序启动时读取其值,例如在
applicationdFinishLaunching
中:

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

根据您的需求,您可能希望混淆上面的代码,包括文字字符串。但是,通常情况下,您无法阻止一个确定的对手。

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

另一方面,如果要检测
CFBundleIdentifier
的篡改,则始终可以在应用程序启动时读取其值,例如在
applicationdFinishLaunching
中:

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

根据您的需求,您可能希望混淆上面的代码,包括文字字符串。但是,一般来说,你无法阻止一个坚定的对手。

为什么要将CbundleIdentifier硬编码到应用程序中?OS X将其设计为放置在plist中,因此如果您将其从plist中删除并嵌入到应用程序中,可能会在操作系统方面造成问题。建议新mac应用商店检查应用程序是否已购买。为什么要将CbundleIdentifier硬编码到应用程序中?OS X将其设计为放置在plist中,因此如果您将其从plist中删除并嵌入到应用程序中,可能会在操作系统方面造成问题。建议新mac应用商店检查应用程序是否已购买。