2013-03-13 115 views
4

我使用MFMesageComposeViewController来发送消息它是我创建问题。MFMessageComposeViewController:如何限制发送消息作为蜂窝消息而不是iMessage

当我发送消息给多个收件人,它工作正常iMessages是启用或禁用设置。但是,当我发送消息给单个联系人,并且iMessages从其设置启用它给我“传递失败”在消息应用程序并显示它为iMessage

我该如何强制MFMessageComposeViewController将它作为手机短信发送。

我的代码是:

[[[MFMessageComposeViewController alloc] init] autorelease]; 
if ([MFMessageComposeViewController canSendText]) { 
    controller.body = @"Sample Text Message"; 
    controller.recipients = [NSArray arrayWithObject:@"XXXXXXXXXXXX"]; 
    controller.messageComposeDelegate = self; 
    } 

回答

2

总之 - 你不能。如果在设备上启用了iMessage并且收件人可用作iMessage客户端,则该消息将作为iMessage发送。这个行为是由iOS本身定义的,你不能改变它。

+1

不,我正在测试这些未注册为Apple ID或iMessage ID的号码 – 2013-03-13 07:27:46

+0

没关系。在您的代码中,您还无法确定手机号码的状态 - 是iMessage还是仅限蜂窝电话客户端。 – 2013-03-13 07:31:43

+1

我认为这可能是最新版本的iOS中的一个错误,因为之前如果我为我的培训时间发送'SMS',它会将SMS发送给非iMessage用户,现在它将作为iMessage发送,而不管收件人是否具有iMessage或不。我必须进入消息,并重新发送为SMS。 – 2013-03-13 13:15:47

1

Apple不提供任何方法来检测邮件是以“iMessage”还是“SMS”的形式发送。

此外,如果您没有连接到互联网,您的信息将不会作为iMessage发送。如果您的互联网连接速度较慢,您的信息将自动作为短信发送。

如果收件人可用作iMessage客户端,并且在您的设备上启用了iMessage,则您的邮件将作为iMessage发送。如果在那个时候,你没有连接到互联网,那么'发送'按钮将被自动禁用。