Я создал функцию, которая извлекает имя пользователя из имени устройства.
Идея состоит в том, чтобы пропустить шаги настройки, чтобы пользователь мог сразу перейти к воспроизведению при первом запуске приложения.
Это неоптимальный подход, поскольку я не могу доверять имени устройства, чтобы сохранить имя пользователя. Вопрос: Каков лучший способ сделать это?
Моя функция ниже получает правильное имя...
- ... если имя по умолчанию для устройства не изменилось ( "Sanna iPod" )
- ... на английском языке,
- ... по-французски и аналогичным ( "iPod de Sanna" )
- ... на шведском и аналогичном ( "Sannas iPod" ), если имя не заканчивается на S ( "Johannes iPod" = > возвращает "Johanne", но скорее вернет "Johannes", чтобы быть правильным, поскольку само название заканчивается знаком S.)
Очевидно, что имя не будет правильно указано, если пользователь изменил имя устройства на другое, чем форма по умолчанию.
- (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, но для каждого пользователя требуется имя пользователя. Итак, как мне получить имя?