Как жестко закодировать CFBundleIdentifier? - PullRequest
1 голос
/ 07 января 2011

Что еще я могу сказать, как мне жестко закодировать CFBundleIdentifier в приложении?

Спасибо

1 Ответ

5 голосов
/ 07 января 2011

Если вы хотите изменить CFBundleIdentifier во время выполнения, вы не сможете этого сделать, если не напишите в пакет приложений Info.plist. Это плохая практика, потому что пакет приложений мог быть перемещен на том только для чтения, или его разрешения на запись были ограничены системным администратором, или имел цифровую подпись, чтобы избежать вмешательства. Я полагаю, что Launch Services не сразу распознает это изменение, и приложение придется перезапустить. Кроме того, это также является причиной отклонения со стороны Mac Apple Store.

С другой стороны, если вы хотите обнаружить подделку CFBundleIdentifier, вы всегда можете прочитать ее значение при запуске приложения, например, в applicationDidFinishLaunching:

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

В зависимости от ваших требований, вы можете захотеть запутать приведенный выше код, включая буквенные строки. Однако, как правило, вы не сможете остановить решительного противника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...