我想检测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。
答案 0 :(得分:2)
也许您可以尝试检测iPad是否也可以发送短信,因此如果未配置iMessage,它应该返回否。从 MFMessageComposeViewController 使用方法 canSendText 。
在呈现消息撰写视图之前,请调用canSendText class方法,以确保用户的设备是适当的 配置。如果,请勿尝试显示消息撰写视图 canSendText方法返回NO。如果既不是iMessage也不是短信/彩信 (短消息服务/多媒体消息服务)交付是 可用,您可以通知用户或只是禁用消息 您应用中的功能。