ash
ash

Reputation: 27

Switch state saved if sms sent

I have been trying to connect a switch to an SMS text which worked out fine, i was even able to save the state the switch was left in.

However now i need to save the state only if the SMS is sent, and if the user doesn't send the message but a switch is already turned on it should then alert them with a AlertView.

So far i have been able to save the state the switch was left it and connect a label to signify if it is "ON" or "OFF" in the SMS.

- (void)viewDidLoad {
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];

    self->switch1.on = ([[standardDefaults stringForKey:@"switchKey"]


                             isEqualToString:@"On"]) ? (YES) : (NO);

if(switch1.on){
    label.text = @"ON";

    NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
    [defults setObject:label.text forKey:@"labelkey"];
    [defults synchronize];


} else label.text = @"OFF"; {

    NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
    [defults setObject:label.text forKey:@"labelkey"];
    [defults synchronize];
}


label.text = [[NSUserDefaults standardUserDefaults]objectForKey:@"labelkey"];

}


- (IBAction)switchChanged:(UISwitch *)sender {

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];

if (sender.on == 0) {

    label.text = @"OFF";
    [standardDefaults setObject:@"Off" forKey:@"switchKey"];


} else if (sender.on == 1) {

    label.text = @"ON";
    [standardDefaults setObject:@"On" forKey:@"switchKey"];

}

[standardDefaults synchronize];
}

This is how i send the SMS.

 - (IBAction)sendRequest:(id)sender
{
    MFMessageComposeViewController *messageVC =    [[MFMessageComposeViewController alloc] init];

messageVC.body = [@[label.text] componentsJoinedByString:@""];
messageVC.recipients = @[_phoneNumber.text];
messageVC.messageComposeDelegate = self;
[self presentViewController:messageVC animated:NO completion:NULL];
}

Upvotes: 0

Views: 23

Answers (1)

RJV Kumar
RJV Kumar

Reputation: 2408

By using MFMessageComposeViewControllerDelegate delegate, you can find Message is sent or cancelled by user.

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult) result

{

switch (result) {
    case MessageComposeResultCancelled:
        //show alert here as per your requirement break;

    case MessageComposeResultFailed:
    {
        UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to send SMS!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [warningAlert show];
        break;
    }

    case MessageComposeResultSent:
        break;

    default:
        break;
}

[self dismissViewControllerAnimated:YES completion:nil];

}

Refer this link -> Send sms

Upvotes: 1

Related Questions