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

时间:2014-11-24 14:30:25

标签: ios

我想检测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;
}

}

然而,我的带有SIM卡的iPad 4让我回答是YES,当它本身无法接收短信时。它有iMessage,但是我没有在iMessage中授权任何帐户,所以可能我没有收到任何短信。如何检测短信接收功能并排除iMessage。

1 个答案:

答案 0 :(得分:2)

也许您可以尝试检测iPad是否也可以发送短信,因此如果未配置iMessage,它应该返回。从 MFMessageComposeViewController 使用方法 canSendText

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

  

在呈现消息撰写视图之前,请调用canSendText   class方法,以确保用户的设备是适当的   配置。如果,请勿尝试显示消息撰写视图   canSendText方法返回NO。如果既不是iMessage也不是短信/彩信   (短消息服务/多媒体消息服务)交付是   可用,您可以通知用户或只是禁用消息   您应用中的功能。