有没有办法以编程方式在iPhone应用程序中找到应用程序标识符前缀?或者甚至只是获取整个应用程序标识符字符串?
我看到你可以通过窥视“embedded.mobileprovision”文件找到它,但有更简单的方法吗? (如果你在模拟器中运行,我认为这不起作用)
编辑:对不起,我的意思是标识符PREFIX(10个字符)。我已经意识到我实际上并不需要这个,因为无论如何,ID的其余部分都保证是唯一的。答案 0 :(得分:10)
捆绑包ID存储在应用程序包的Info.plist中,如St3fan所指定,但您不应直接在Info.plist上进行搜索。相反,使用:
[[NSBundle mainBundle] bundleIdentifier]
答案 1 :(得分:4)
您可以通过查看现有KeyChain项的访问组属性(即kSecAttrAccessGroup
)以编程方式检索Bundle Seed ID。在下面的代码中,我查找现有的KeyChain条目,如果它不存在则创建一个。一旦我有KeyChain条目,我从中提取访问组信息并返回访问组的第一个组件,以“。”分隔。 (期间)作为捆绑种子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;
}
答案 2 :(得分:0)
如果我理解正确您正在寻找捆绑标识符?如果你能这样做的话。
NSString* appID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];