MFMessageComposeViewController on Simulator - canS

2020-02-11 21:23发布

问题:

following situation: I want to send in app SMS. This is my code creating the MFMessageComposeViewController:

-(void) showMessageComposerWithText:(NSString*)messageText telNumber:(NSString*)telNumber composeDelegate:(id)delegate
{
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    if([MFMessageComposeViewController canSendText])
    {   
        controller.body = messageText;
        controller.recipients = [NSArray arrayWithObject:telNumber];
        controller.messageComposeDelegate = delegate;

        [delegate presentModalViewController:controller animated:YES];
    }
}

So I think this is straight forward. When testing in Simulator I get following exception: Application tried to push a nil view controller on target <MFMessageComposeViewController: 0x8a4e090>. I'm also wondering myself why [MFMessageComposeViewController canSendText] returns YES when running the app in the simulator.

When running on the device, everything is working correctly.

I couldn't find anything in the docs/web concerning this strange behavior.

I'm running Xcode 4.3 on OS 10.7.3, Deployment Target is iOS 5.0.

Thanks in advance, tubtub

回答1:

This problem occurs when you install Messages beta on OS X Lion.

Edit: It also occurs on Mountain Lion when there is an iMessage account configured and enabled. If the account is disabled, it works correctly (canSendText returns NO).

Tip: If you use controller.modalTransitionStyle = UIModalTransitionStylePartialCurl, you can go back in Simulator by clicking on the curled "page" in the upper left corner.



回答2:

The simulator should always return NO from the canSendText, this isn't the case for the iOS 5.0 and 5.1 simulators. With Xcode 4.2 it crashed, on Xcode 4.3 it just pushes a nil view controller.



回答3:

I'm seeing the same thing. I think it's a bug in the iOS 5 simulator with Xcode 4.3. canSendText correctly returns NO in the iOS 4.3 simulator. The same code works fine on the device.



回答4:

With this configuration, canSendText returns correctly NO in the simulator (plus, a UIAlertView appears to say text messaging is not available):

  • Mountain Lion
  • Xcode 4.4,
  • iOS 5.1