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