以编程方式查找iPhone应用程序标识符前缀

3
有没有办法在iPhone应用程序中以编程方式找到应用程序标识符前缀?或者只是获取整个应用程序标识符字符串?
我看到你可以通过查看“embedded.mobileprovision”文件来找到它,但是否有更简单的方法呢?(如果您在模拟器上运行,则我认为这种方法行不通)
编辑:抱歉,我的意思是标识符前缀(10个字符)。不过我已经意识到我实际上并不需要这个,因为ID的其余部分肯定是唯一的。
3个回答

10

应如St3fan所述,包ID存储在应用程序包的Info.plist中,但您不应直接查看Info.plist。相反,应使用:

[[NSBundle mainBundle] bundleIdentifier]

4

你可以通过查看现有KeyChain条目的访问组属性(即kSecAttrAccessGroup)来以编程方式检索Bundle Seed ID。在下面的代码中,我查找现有的KeyChain条目并在不存在时创建一个。一旦我有了一个KeyChain条目,我从中提取访问组信息,并将访问组的第一个组件(使用“.”分隔符)作为Bundle Seed ID返回。

+ (NSString *)bundleSeedID {
    NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
                           kSecClassGenericPassword, kSecClass,
                           @"bundleSeedID", kSecAttrAccount,
                           @"", kSecAttrService,
                           (id)kCFBooleanTrue, kSecReturnAttributes,
                           nil];
    CFDictionaryRef result = nil;
    OSStatus status = SecItemCopyMatching((CFDictionaryRef)query, (CFTypeRef *)&result);
    if (status == errSecItemNotFound)
        status = SecItemAdd((CFDictionaryRef)query, (CFTypeRef *)&result);
    if (status != errSecSuccess)
        return nil;
    NSString *accessGroup = [(NSDictionary *)result objectForKey:kSecAttrAccessGroup];
    NSArray *components = [accessGroup componentsSeparatedByString:@"."];
    NSString *bundleSeedID = [[components objectEnumerator] nextObject];
    CFRelease(result);
    return bundleSeedID;
}

在发布复制和粘贴的样板/逐字回答多个问题时要小心,这些往往会被社区标记为“垃圾邮件”。如果您这样做,通常意味着这些问题是重复的,请将它们标记为重复。https://dev59.com/mmgt5IYBdhLWcg3w5xg_#11841898 - Kev
谢谢提醒。起初,我只添加了一个指向我的其他答案的链接作为答案,但是SO自动将其转换为对问题的评论。我认为将我的答案复制到这里会更有帮助,因为所有其他回答者都误解了问题并给出了错误的答案。我应该删除这个答案,并将链接作为对问题的评论吗? - David H
此外,我检查了SO的“flag”功能并没有找到一个合适的选项来标记这个问题。该问题包含一些其他问题所缺少的信息,因此它不是完全重复的。 - David H

0

如果我理解正确,您正在寻找捆绑标识符?如果是的话,可以通过以下方式获取。

NSString* appID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];

2
一个匿名用户建议这样更简单:NSString* appID = [[NSBundle mainBundle] bundleIdentifier]; - mplungjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接