Я работаю над функцией электронной почты в приложении, и прямо сейчас у меня есть строка [mailer setSubject:@"Someone has sent you a haiku."];
. Как установить его так, чтобы «Кто-то» был заменен именем владельца iPhone, а тема «Джон Доу отправил вам хайку»?Как вставить имя зарегистрированного владельца в строку для темы электронной почты?
ответ
Как обсуждалось в this post вы не можете получить имя пользователя, так как это вопрос конфиденциальности. Вы можете запросить у пользователя свое имя при первой установке приложения, а затем сохранить эту информацию. Конечно, вы хотите предоставить пользователю возможность изменить его позже через представление настроек или подобное.
Вы можете, однако, найти имя iPhone, на котором работаете, и, как правило, они называются «iPhone Джона». Таким образом, вы можете сочтет приемлемым отправлять такие сообщения, как «iPhone Джона отправил вам хайку». Если это сработает для вас, вы можете получить имя iPhone и вставить его в свою строку следующим образом:
[mailer setSubject:[NSString stringWithFormat:@"%@ has sent you a haiku.", [[UIDevice currentDevice] name]]];
Песочница Apple не позволяет вам получать электронную почту, контактную информацию и т. Д. О пользователе iPhone. Вероятно, вы можете найти несколько способов сделать это, но они, как правило, не пройдут, если вы отправитесь в магазин.
Вы можете получить имя телефона: [[UIDevice currentDevice] name];
Это публичный API, по крайней мере, и, кажется, есть некоторый успех.
В противном случае вы должны просто попросить пользователя указать имя, которое они хотели бы использовать. Его приятнее - может быть, они хотят поставить ник в любом случае.
за десять секунд до меня :) Но мой ответ решает проблему OP. –
Я думаю, что ответ Торри, вероятно, лучше всего. Я подниму это. –
Ты ОБА хорошенькая. :) –
NSString *deviceName = [[UIDevice currentDevice] name]; // John's iPhone
NSRange r = [deviceName rangeOfString:@"'"]; // { 4; 1 }
NSString *user = [deviceName substringToIndex:r.location];
NSString *subject = [NSString stringWithFormat:@"%@ has sent you a haiku", user];
/* Assumes that the device name contains the user's name as the part before an aphostrophe.
* If this isn't the case, you have to check for something else.
*/
К сожалению, этот код генерирует исключение NSRangeException, если имя не содержит апострофа. :) –
@AdamB Вы видите последний комментарий? (Я надеюсь, что так :) –
'[[[deviceName componentsSeparatedByString: @" '"] [0] componentsSeparatedByString: @"' "] [0] componentsSeparatedByString: @" "] [0]' работает для любого имени устройства. – devios1
Спасибо! Я начну с этого, так как я пытаюсь сделать настройки/настройки как можно более минимальными (хотя это может быть только я, будучи страшно-кошкой) .... –
Интересно ... iPhone Джона отправил вам хайку ... (обратите внимание, что вызов подстроки в моем ответе!) –