0

我已经知道我们可以选择以编程方式发送短信,即使用MFMessageComposeViewController,但是否可以将消息安排给指定的收件人。我目前正在使用以下代码发送短信:

Class smsClass = (NSClassFromString(kMessageComposer));

if(smsClass != nil && [MFMessageComposeViewController canSendText])
{
     MFMessageComposeViewController *smsSendController = [[[MFMessageComposeViewController alloc] init] autorelease];
     smsSendController.messageComposeDelegate = self;
     smsSendController.body = messageBodyView.text;
     smsSendController.recipients = [[[NSArray alloc]initWithObjects:numberField.text,nil]autorelease];
     if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 6.0)
     {
         [self presentViewController:smsSendController animated:YES completion:nil];
     }
     else
     {
         [self presentModalViewController:smsSendController animated:YES];   
     }
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{    
    switch (result) 
    {
        case MessageComposeResultCancelled:
        {
            UIAlertView *smsCancelledAlert = [[UIAlertView alloc] initWithTitle:kApp message:kCancel
                                                           delegate:self cancelButtonTitle:kOk otherButtonTitles: nil];
            [smsCancelledAlert show];
            [smsCancelledAlert release];
        }
            break;
        case MessageComposeResultFailed:
        {
            UIAlertView *smsFailedAlert = [[UIAlertView alloc] initWithTitle:kApp message:kError
                                                           delegate:self cancelButtonTitle:kOk otherButtonTitles: nil];
            [smsFailedAlert show];
            [smsFailedAlert release];
        }
            break;
        case MessageComposeResultSent:
        {
            UIAlertView *smsSentAlert = [[UIAlertView alloc]initWithTitle:kApp message:kSent delegate:self cancelButtonTitle:kOk otherButtonTitles:nil, nil];
            [smsSentAlert show];
            [smsSentAlert release]; 
        }
            break;

        default:
            break;
    }
    if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 6.0)
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    else
    {
        [self dismissModalViewControllerAnimated:YES];
    }
}

我还想知道这段代码是否在 4.3 以上的所有版本中都能完美运行,直到 6.0 为止。截至目前,我没有可用的设备来测试它。因此,需要一些经历过此代码工作/失败的人的答案。

除此之外,我想安排消息,即用户指定的日期和时间,并且该进程应该在后台运行而无需任何用户交互。

如何做到这一点?

4

1 回答 1

1

MFMessageComposerViewController没有用户交互就无法发送。

您可以考虑为 sms 网关创建自定义 Web 服务来实现此目的

于 2013-05-06T05:34:38.447 回答