如何从Cocoa中的应用程序名称获取Bundle Identifier?

Ton*_*ony 5 cocoa nsbundle

假设您有应用程序的名称,Mail.app您如何以编程方式com.apple.mail从应用程序名称获取?

Dav*_*lis 17

以下方法将为命名的应用程序返回应用程序的Bundle Identifier:

- (NSString *) bundleIdentifierForApplicationName:(NSString *)appName
{
    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    NSString * appPath = [workspace fullPathForApplication:appName];
    if (appPath) {
        NSBundle * appBundle = [NSBundle bundleWithPath:appPath];
        return [appBundle bundleIdentifier];
    }
    return nil; 
}
Run Code Online (Sandbox Code Playgroud)

对于Mail,您可以像这样调用方法:

NSString * appID = [self bundleIdentifierForApplicationName:@"Mail"];
Run Code Online (Sandbox Code Playgroud)

appID 现在包含 com.apple.mail