检测设备是否可以接收短信
我想检测如果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 。 使用MFMessageComposeViewController的canSendText方法。
检查这个: 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。
- 在iOS中拨打电话时调用标头的方法是什么?
- 获取当前时间
- iOS设备不会显示在Xcode 6.1.1上 – 直到重新启动Mac之后
- XCTestCase waitForExpectationsWithTimeout:处理程序:在未满足期望时抛出EXC_BAD_ACCESS
- XcodeのRun Scriptフェーズを无效にしてビルド时间を短缩する(スクリプト付き)
- NSAttributedString – 获取字体属性
- 如何在使用XCode 7的Storyboards中将视图高度设置为屏幕高度的百分比
- 导航栏在执行popViewController时闪烁黑色
- 在iPhone上处理时,如何使iPad上的iOS推送通知无效?