Лучший способ получить имя пользователя с устройства?
Я сделал функцию, которая извлекаетимя пользователя из названия устройства.
Идея состоит в том, чтобыпропустите шаги настройки, чтобы позволить пользователю перейти прямо к игре после запуска приложения в первый раз.
Это неоптимальный подход, так как я никогда не могу доверять имени устройства для хранения имени пользователя. Вопрос в том:Какой лучший способ сделать это?
Моя функция ниже получает правильное имя ...
... если имя устройства по умолчанию не изменилось («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, но каждому пользователю требуется имя пользователя. Так как я могу получить имя?