Примечания: Когда вы приложение создано в ITunes Connect, яблоко Назначает APP_ID к вашему приложению, то вы можете проверить его в "More-> Об этом App"
Метод: getSecureValueForKey
Метод: storeSecureValue
#import "JNYJKeyChain.h"
@implementation JNYJKeyChain
+ (NSString *)getSecureValueForKey:(NSString *)key
{
/*
Return a value from the keychain
*/
// Retrieve a value from the keychain
NSDictionary *result = nil;
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, kSecReturnAttributes, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, kCFBooleanTrue, nil] autorelease];
NSDictionary *query = [[NSDictionary alloc] initWithObjects: objects forKeys: keys];
// Check if the value was found
OSStatus status = SecItemCopyMatching((CFDictionaryRef) query, (CFTypeRef *) &result);
[query release];
if (status != noErr) {
// Value not found
return nil;
} else {
// Value was found so return it
NSString *value = [NSString stringWithString:(NSString *) [result objectForKey: (NSString *) kSecAttrGeneric]];
[result release];
return value;
}
}
+ (BOOL)storeSecureValue:(NSString *)value forKey:(NSString *)key
{
/*
Store a value in the keychain
*/
// Get the existing value for the key
NSString *existingValue = [self getSecureValueForKey:key];
// Check if a value already exists for this key
OSStatus status;
if (existingValue) {
// Value already exists, so update it
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, nil] autorelease];
NSDictionary *query = [[[NSDictionary alloc] initWithObjects: objects forKeys: keys] autorelease];
status = SecItemUpdate((CFDictionaryRef) query, (CFDictionaryRef) [NSDictionary dictionaryWithObject:value forKey: (NSString *) kSecAttrGeneric]);
} else {
// Value does not exist, so add it
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, kSecAttrGeneric, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, value, nil] autorelease];
NSDictionary *query = [[[NSDictionary alloc] initWithObjects: objects forKeys: keys] autorelease];
status = SecItemAdd((CFDictionaryRef) query, NULL);
}
// Check if the value was stored
if (status != noErr) {
// Value was not stored
return false;
} else {
// Value was stored
return true;
}
}
@end
APP ID, вы можете найти в iTunes Connect! – JNYJ
@JNYJ Я смотрю здесь https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Appendices/Properties.html, но это не говорит мне, как получить доступ к значению идентификатора приложения в мой проект xcode. Все, что он говорит, это Apple ID: «Уникальный номер, который Apple присваивает приложению». Где я могу присвоить это значение моему проекту (проект не опубликован в магазине приложений)? –
Когда приложение создано в iTunes Connect, Apple назначает app_id вашему APP, тогда вы можете проверить его в «More-> Об этом приложении». но я не знаю этого app_id, что вы можете получить в XCODE !, у меня нет идеи! – JNYJ