1

我正在尝试通过我当前的应用程序发送短信。

 if ([NSClassFromString(@"MFMessageComposeViewController") canSendText])

我已经尝试了上面的行,但它返回false?我确定我可以通过手机发送短信(使用真实设备进行测试),那么我是否缺少任何设置?

所以尝试了这个:

   Class smsClass = (NSClassFromString(@"MFMessageComposeViewController"));
   if(smsClass != nil)
   {
      if ([smsClass canSendText])
      {
          [self presentMessageComposeViewController];
      }
   }

smsClass 返回零。

非常感谢帮助。

4

3 回答 3

2

试试这个

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
    controller.body = @"Hello Test massage";
    controller.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
    controller.messageComposeDelegate = self;
    [self presentModalViewController:controller animated:YES];
}
于 2012-11-06T08:34:59.357 回答
0

根据Apple 文档,canSendText 仅适用于 iOS 4 及更高版本。

因此,如果您使用 iOS 3 运行您的设备,您的应用程序行为是正常的。

为什么要使用 NSClassFromString ,以下应该可以工作(在 iOS 4 及更高版本上):

[MFMessageComposeViewController canSendText];
于 2012-11-06T08:23:16.287 回答
0
if ([NSClassFromString(@"MFMessageComposeViewController") canSendText])

将始终返回 false。因为canSendText仅适用于 class MFMessageComposeViewController。但NSClassFromString(@"MFMessageComposeViewController")会返回一个类(不是MFMessageComposeViewController类)。

也许你可以试试这样。

 Class smsClass = (NSClassFromString(@"MFMessageComposeViewController"));
   if(smsClass != nil)
  {
      if ([(MFMessageComposeViewController *)smsClass canSendText])
      {
          [self presentMessageComposeViewController];
      }
   }

或者你可以简单地使用

[MFMessageComposeViewController canSendText];
于 2012-11-06T09:33:18.777 回答