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

Я сделал функцию, которая извлекаетимя пользователя из названия устройства.

Идея состоит в том, чтобыпропустите шаги настройки, чтобы позволить пользователю перейти прямо к игре после запуска приложения в первый раз.

Это неоптимальный подход, так как я никогда не могу доверять имени устройства для хранения имени пользователя. Вопрос в том:Какой лучший способ сделать это?

Моя функция ниже получает правильное имя ...

... если имя устройства по умолчанию не изменилось («iPod от Sanna»)... по-английски,... на французском и аналогичных ("iPod de Sanna")... на шведском и аналогичных («Sannas iPod»), если имя не заканчивается на S («Johannes iPod» => возвращает «Johanne», но вместо этого должно возвращаться «Johannes», чтобы быть правильным, так как само имя заканчивается на « С.)

Очевидно, что имя не будет правильно, если пользователь изменил имя устройства на другое, чем форма по умолчанию.

- (NSString *) extractPlayerNameFromDeviceName: (NSString *) deviceName  {

    // get words in device name
    NSArray *words = [deviceName componentsSeparatedByString:@" "];
    NSMutableArray *substrings = [[NSMutableArray alloc] init]; 
    for (NSString *word in words) {
        NSArray *subwords = [word componentsSeparatedByString:@"'"];
        [substrings addObjectsFromArray:subwords];
    }

    // find the name part of the device name
    NSString *playerName = [NSString stringWithString: @""];
    for (NSString *word in substrings) {
        if ([word compare:@"iPhone"] != 0
            && [word compare:@"iPod"] != 0
            && [word compare:@"iPad"] != 0
            && [word length] > 2) {
            playerName = word;
        }
    }

    // remove genitive
    unichar lastChar = [playerName characterAtIndex:[playerName length] - 1];
    if (lastChar == 's') {
        playerName = [playerName substringToIndex:[playerName length] - 1];
    }
    lastChar = [playerName characterAtIndex:[playerName length] - 1];
    if (lastChar == '\'') {
        playerName = [playerName substringToIndex:[playerName length] - 1];
    }
    return playerName;
}

Я использую его для предложения имени пользователя в моем приложении. Таким образом, большинству пользователей не придется писать свои имена пользователей.

Мое приложение не подключено к каким-либо другим службам, таким как iTunes или Facebook, но каждому пользователю требуется имя пользователя. Так как я могу получить имя?

Ответы на вопрос(5)

Ваш ответ на вопрос