2

我是 iphone 应用程序开发的新手。

我正在创建一个发送短信的应用程序。

在我的应用程序中,我需要在指定时间发送短信。

我有一个时间选择器来指定 UITextField 中的时间。

-(void)sendInAppSMS { NSLog(@"SendMessage");

if([textFieldRounded.text isEqualToString:@""] || [textFieldRounded1.text isEqualToString:@""] || [textFieldRounded2.text isEqualToString:@""] || [textFieldRounded.text isEqualToString:@"(null)"] ||  [textFieldRounded1.text isEqualToString:@"(null)"] ||  [textFieldRounded1.text isEqualToString:@"(null)"] || [textFieldRounded.text isEqualToString:nil]  || [textFieldRounded1.text isEqualToString:nil]|| [textFieldRounded2.text isEqualToString:nil])
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"SMS" message:@"Please Enter All Fields!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];
}
else 
{
    NSLog(@"Done");
    NSDateFormatter *SentTime = [[NSDateFormatter alloc] init];
    [SentTime setDateFormat:@"dd/MM/YYYY hh:mm aa"];
    NSDate *now1 = [NSDate date];
    NSString *Time1 = [SentTime stringFromDate:now1];
    NSLog(@"Time is :%@",Time1);
    NSString *Sentime=[NSString stringWithFormat:@"%@",textFieldRounded2.text];

    if([Sentime isEqualToString:Time1])
    {
        NSLog(@"Time Matching... can send msg now");

        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
        if([MFMessageComposeViewController canSendText])
        {

            NSString *Message = [NSString stringWithFormat:@"%@, %@",textFieldRounded1.text,textFieldRounded2.text];
            NSLog(@"Message is %@", Message);
            controller.body = Message;
            controller.recipients = [NSArray arrayWithObjects:@"+919999999999" , nil];
            controller.messageComposeDelegate = self;
            [self presentModalViewController:controller animated:YES];
        }

    }
    else
    {
        NSLog(@"Send Message when time reach at %@",textFieldRounded2.text);

        //Here What code i should write
    }
}

}

如果时间等于当前时间,则立即发送短信(无需将消息存储在任何地方)。

否则,当当前时间变为指定时间时,我需要发送该短信。直到时间到达如何保存(存储)消息并按时发送。

问候,

拉金德兰

4

3 回答 3

2

您不能在 iOS 中使用计时器发送短信,Apple 不允许此功能。

看到这个

于 2012-11-26T06:11:37.943 回答
0

正如在其他答案中所指出的那样,不可能“保存”用户MFMessageComposeViewController在稍后发送的消息(也没有其他方法可以这样做)。

您的选择是:

  • 提前收集 SMS 的详细信息,然后在正确的时间提示用户。UILocalNotification如果应用程序可能已关闭,您可以为此使用。您可以在实例上使用setTitle:setBody:和预填充正确详细信息的消息,因此用户只需点击发送。setRecipients:MFMessageComposeViewController

  • 将消息详细信息发送回服务器,并使用某些 SMS 系统(例如Twilio api)在正确的时间发送 SMS。这将显着增加复杂性,并且 SMS 不会来自用户的电话号码。

于 2012-11-26T07:25:49.880 回答
0

就用户体验而言,除非当前时间与指定时间的确切分钟相匹配,否则您的代码不太可能允许用户发送消息。检查时间是否在指定时间之后或在指定时间的某个范围内会更有意义。另外值得注意的是,如果您不比较字符串文字,则进行这些比较会更容易。(使用 NSDate 和相关的便利方法进行这些比较)

就在某个时间发送消息而言,这可能需要一个服务器组件,您在其中注册要发送的消息和应该发送的时间,然后以指定的时间间隔处理消息发送队列中的消息.

于 2012-11-26T07:01:31.833 回答