检测设备是否可以接收短信

我想检测如果iOS设备可以接收短信。 从第一眼看,我可以使用下面的代码:

+(bool)canDeviceSendSms { // Check if the device can send sms if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"sms://"]]) { // Device supports sms, lets confirm it can place one right now CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [netInfo subscriberCellularProvider]; NSString *mnc = [carrier mobileNetworkCode]; if (([mnc length] == 0) || ([mnc isEqualToString:@"65535"])) { // Device cannot send sms at this time. SIM might be removed. return NO; } else { // Device can send sms return YES; } } else { // Device does not support sms sending return NO; } 

}

但是,我的iPad 4与SIM卡返回我YES,当它本身不能够接收短信。 它有iMessage,但例如我没有授权iMessage中的任何帐户,所以可能我不会收到任何短信。 如何检测短信接收能力并排除iMessage。

也许你可以尝试检测iPad是否可以发送短信,所以如果没有configurationiMessage,它应该返回NO 。 使用MFMessageComposeViewControllercanSendText方法。

检查这个: https : //developer.apple.com/library/ios/Documentation/MessageUI/Reference/MFMessageComposeViewController_class/index.html#//apple_ref/occ/clm/MFMessageComposeViewController/canSendText

在呈现消息组合视图之前,调用canSendText类的方法来确保用户的设备已正确configuration。 如果canSendText方法返回NO,则不要尝试显示消息组合视图。 如果iMessage和SMS / MMS(短消息服务/多媒体消息服务)传送都不可用,则可以通知用户或者简单地禁用应用程序中的消息function。