イナヅマTVログ

Objective-C事始め – Application identifier prefixを取出したい

| 0件のコメント

2013-08の書きかけの記事の再編集投稿です。
Xcode 4.6.3, iOS 6 当時の情報になります。

App ID(Application identifier)

Cocoa Core Competencies: App ID

A1B2C3D4E5.com.example.applicationname

Team ID: A1B2C3D4E5
Bundle ID: com.example.applicationname

Application identifier prefix

Team ID(A1B2C3D4E5)の部分をコードで取得したい。

stackoverflow: Finding iPhone Application Identifier Prefix programmatically
いつも助かるstackoverflow、感謝。

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

Simulatorでは戻り値は常に”test”になります。
実機テストでTeam IDが取得できます。

コメントを残す

必須欄は * がついています