Любой способ получить имя пользователя iPhone?
Не запрашивая у пользователя ввода своего имени, есть ли способ его снять с устройства?
Я попробовал эту библиотеку, которая пытается извлечь имя из [UIDevice currentDevice] name]
, но это не работает во многих ситуациях:
https://github.com/tiboll/TLLNameFromDevice
Является ли имя пользователя в телефонной книге или где-либо еще, к которому у нас есть доступ в iOS 6?
Ответы
Ответ 1
Хорошо, вы могли бы пройти через все контакты в адресной книге и посмотреть, отмечен ли какой-либо из них значком владельца.
Просто имейте в виду, что при этом появится сообщение "Это приложение хочет получить доступ к адресной книге". Также Apple не очень увлекается такими вещами. В руководстве по просмотру приложения указано, что приложение не может использовать личную информацию без разрешения пользователя.
Ответ 2
Вы можете использовать Квадратное решение:
- Получить имя устройства (например, "iPhone Джона Смита" ).
- Пройдите по контактам на телефоне и найдите контакт с именем "Джон Смит".
JBDeviceOwner и ABGetMe оба сделают это за вас.
Ответ 3
Вы можете использовать:
NSLog(@"user == %@",[[[NSHost currentHost] names] objectAtIndex:0]);
Я получил предупреждения компилятора о том, что методы +currentHost
и -names
не найдены. Учитывая предупреждение, Im не уверен в намерении Apple сделать это доступным (или нет), как общедоступным API, однако, казалось, что все работает, как ожидается, без необходимости включать какие-либо дополнительные файлы заголовков или связывание в дополнительных libraries
/frameworks
.
Изменить 1:
Вы можете также взглянуть на Ссылка
Изменить 2:
Если вы интегрировали свое приложение в Facebook, вы можете легко получить информацию о пользователе, см. Facebook Fetch User Data
Ответ 4
Вы можете использовать CloudKit. Следуя фрагменту в Swift (игнорируя ошибки):
let container = CKContainer.defaultContainer()
container.fetchUserRecordIDWithCompletionHandler(
{
(recordID, error) in
container.requestApplicationPermission(
.PermissionUserDiscoverability,
{
(status, error2) in
if (status == CKApplicationPermissionStatus.Granted)
{
container.discoverUserInfoWithUserRecordID(
recordID,
completionHandler:
{
(info, error3) in
println("\(info.firstName) \(info.lastName)")
}
)
}
}
)
}
)
Вышеприведенный код был основан на коде http://www.snip2code.com/Snippet/109633/CloudKit-User-Info