私はアプリ内メール機能に取り組んでおり、現在は[mailer setSubject:@"Someone has sent you a haiku."];
. 「誰か」がiPhoneの所有者の名前に置き換えられ、件名が「John Doeがあなたに俳句を送りました」になるように設定するにはどうすればよいですか?
3 に答える
この投稿で説明されているように、プライバシーの問題であるため、ユーザーの名前を取得することはできません。初めてのアプリケーション設定でユーザーに名前を尋ねてから、この情報を保存することができます。もちろん、ユーザーが設定ビューなどを使用して後で変更する方法を提供する必要があります。
ただし、実行しているiPhoneの名前を見つけることはできます。これらの名前は通常、「John'siPhone」のようになります。そのため、「ジョンのiPhoneから俳句が届きました」などのメッセージを送信してもかまいません。これで問題が解決する場合は、iPhoneの名前を取得して、次のように文字列に挿入できます。
[mailer setSubject:[NSString stringWithFormat:@"%@ has sent you a haiku.", [[UIDevice currentDevice] name]]];
Appleのサンドボックスでは、iPhoneのユーザーに関する電子メールや連絡先情報などを取得することはできません。あなたはおそらくそれをするためのいくつかの方法を見つけることができます、しかしあなたが店に提出するならばそれらは一般的に召集を通過しません。
あなたは電話の名前を得ることができます:
[[UIDevice currentDevice] name];
これは少なくともパブリックAPIであり、ある程度の成功を収めているようです。
それ以外の場合は、使用する名前をユーザーに尋ねるだけです。それはもっといいです-多分彼らはとにかくニックネームを入れたいと思うでしょう。
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.
*/