2011-01-07 5 views
1

Was kann ich noch sagen, wie kann ich den CFBundleIdentifier in der App fest codieren?Wie Sie CFBundleIdentifier fest codieren?

Dank

+0

Warum möchten Sie den CFBundleIdentifier in der App fest codieren? OS X hat es so konzipiert, dass es in PLIST platziert werden kann. Wenn Sie es aus dem PLIST entfernen und in die App einbetten, kann dies unter OS-Perspektive zu Problemen führen. –

+0

Es ist etwas, das für den neuen Mac Store empfohlen wird, um zu überprüfen, ob die Anwendung tatsächlich gekauft wurde. – eemceebee

Antwort

5

Wenn Sie CFBundleIdentifier während der Laufzeit ändern, können Sie nicht, wenn Sie auf das Anwendungspaket Info.plist schreiben. Das ist eine schlechte Methode, da das Anwendungspaket möglicherweise auf ein schreibgeschütztes Volume verschoben wurde oder seine Schreibberechtigungen vom Systemadministrator eingeschränkt oder digital signiert wurden, um Manipulationen zu vermeiden. Ich nehme an, Launch Services würde diese Änderung nicht sofort erkennen und die Anwendung müsste neu gestartet werden. Darüber hinaus ist es auch ein Grund für die Ablehnung durch den Mac Apple Store.

Wenn Sie andererseits eine Manipulation von CFBundleIdentifier erkennen möchten, können Sie den Wert beim Starten der Anwendung, z. in applicationDidFinishLaunching:

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

Je nach Bedarf, können Sie den Code oben, einschließlich der Zeichenketten verschleiern. Im Allgemeinen werden Sie jedoch nicht in der Lage sein, einen entschlossenen Gegner aufzuhalten.

Verwandte Themen