2

ユーザーが要求すると、私のアプリは SMS を送信し、作成ビューがポップアップします。このコードを使用してこれを行い、ハードコードされた番号とメッセージをデフォルトとして設定できます。

[self sendSMS:@"messageTextGoesHere" recipientList:[NSArray arrayWithObjects:@"phoneNumberGoesHere", nil]];

- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    if([MFMessageComposeViewController canSendText])
    {
    controller.body = bodyOfMessage;
    controller.recipients = recipients;
    controller.messageComposeDelegate = self;
    [self presentViewController:controller animated:YES completion:nil];
    }    
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
[controller dismissViewControllerAnimated:YES completion:nil];
}

しかし、私がやりたいことは、受信者とメッセージを NSUserDefaults 文字列に設定することです。これは私が試したものです:

NSString *messageNumbers = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];
NSString *textMessage = [[NSUserDefaults standardUserDefaults] objectForKey:@"messageText"];
[self sendSMS:textMessage recipientList:[NSArray arrayWithObjects:messageNumbers, nil]];

通常のポップアップ メッセージ コンポーザーの代わりに、しばらくハングしてから画面が真っ暗になるため、アプリを終了する必要があります。コンソールには次のように表示されます。

2013-10-27 17:29:45.428 *APP*[4006:60b] <CKSMSComposeRemoteViewController: 0x1844fb90> timed out waiting for fence barrier from com.apple.mobilesms.compose
2013-10-27 17:29:45.936 *APP*[4006:60b] Warning: Attempt to dismiss from view controller <ViewController: 0x14e02700> while a presentation or dismiss is in progress!

誰かが私が間違ったことや、別のコードを使用する必要があるかどうかを教えてもらえますか?

ありがとう!

4

1 に答える 1

0

objectForKey を使用する代わりに、stringForKey を試すことができます。objectForKey は (id) を返しますが、期待どおりに文字列にキャストされていない可能性があります。

NSString *textMessage = [[NSUserDefaults standardUserDefaults] stringForKey:@"messageText"];
于 2013-10-27T19:29:04.503 に答える