我有一个应用程序,配置为将应用程序内的短信发送到定义的号码。在viewDidLoad中,我检查设备是否可以使用[MFMessageComposeViewController canSendText]发送文本消息,然后在设备不支持的情况下隐藏控件。
直到现在这已经很好了,但现在我正在为iOS 5更新它,并且发现了不支持SMS的设备,但支持iMessage从[MFMessageComposeViewController canSendText]接收YES消息。
由于接收号码不是iOS 5设备,因此iMessage服务上发送的任何消息都会失败。只是为了让事情变得更糟,委托方法messageComposeViewController:didFinishWithResult:报告MessageComposeResultSent,所以我甚至无法在事件后显示消息。用户唯一一次看到消息未被传递的时间是他们查看消息传递应用程序,然后消息被标记为“未传递”。
那么,有没有办法查询设备是否可以发送'真正的'sms消息,或者它是否只是获得iMessage支持?
答案 0 :(得分:5)
如果您当前的设备可以通过以下方式拨打电话,您可以尝试确定: [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@“tel://”]]
如果返回YES,则表示您的设备具有GSM / CDMA模块,这意味着您可以发送短信。如果您收到NO,则只能发送iMessage。