Любой способ получить имя пользователя iPhone?

Не запрашивая у пользователя ввода своего имени, есть ли способ его снять с устройства?

Я попробовал эту библиотеку, которая пытается извлечь имя из [UIDevice currentDevice] name], но это не работает во многих ситуациях:

https://github.com/tiboll/TLLNameFromDevice

Является ли имя пользователя в телефонной книге или где-либо еще, к которому у нас есть доступ в iOS 6?

Ответ 1

Хорошо, вы могли бы пройти через все контакты в адресной книге и посмотреть, отмечен ли какой-либо из них значком владельца.

Просто имейте в виду, что при этом появится сообщение "Это приложение хочет получить доступ к адресной книге". Также Apple не очень увлекается такими вещами. В руководстве по просмотру приложения указано, что приложение не может использовать личную информацию без разрешения пользователя.

Ответ 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