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