Was kann ich noch sagen, wie kann ich den CFBundleIdentifier in der App fest codieren?Wie Sie CFBundleIdentifier fest codieren?
Dank
Was kann ich noch sagen, wie kann ich den CFBundleIdentifier in der App fest codieren?Wie Sie CFBundleIdentifier fest codieren?
Dank
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.
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. –
Es ist etwas, das für den neuen Mac Store empfohlen wird, um zu überprüfen, ob die Anwendung tatsächlich gekauft wurde. – eemceebee