首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检测iOS短信功能(一般不是文本消息)

如何检测iOS短信功能(一般不是文本消息)
EN

Stack Overflow用户
提问于 2017-03-18 19:53:23
回答 1查看 609关注 0票数 1

我正在编写一个应用程序,可以选择允许你发送短信给一个用户列表。该应用程序目前检测设备是否允许使用MFMessageComposeViewController.canSendText()发送文本消息,并仅在结果为真时显示“发送短信”按钮。

今天,我的一个用户抱怨说,当他按下他的只有Wifi功能的iPad上的按钮时,什么也没有发生。结果是,如果iOS设备启用了iMessage功能,即使不支持短信,canSendText()也会返回true。在iOS设置中关闭iMessage功能会正确禁用“发送短信”按钮。

通过iMessage发送消息的问题是,某些收件人会打开iMessage,因此会收到文本消息。但对于没有使用iMessage的收件人(它可能已经关闭,或者他们可能一开始就没有使用苹果设备),这些消息将不会到达。(当MFMessageComposeViewController最终打开时,这些地址将标记为红色。但我的普通用户不会理解这意味着消息将不会传递。)

有没有人知道一种可靠的方法,可以专门测试短信功能,而不仅仅是一般的短信(短信,iMessage和彩信)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-18 22:02:40

据我所知,安装了iOS 5+的设备将返回适用于MFMessageComposeViewController.canSendText()TRUE,因为它们支持iMessage

因此,我假设您只需要发送文本,如果SIM卡安装在设备上。但是没有办法检测设备上是否安装了SIM卡。不过,您仍然可以使用以下解决方法:

代码语言:javascript
复制
#import<CoreTelephony/CTCallCenter.h>
#import<CoreTelephony/CTCall.h>
#import<CoreTelephony/CTCarrier.h>
#import<CoreTelephony/CTTelephonyNetworkInfo.h>

CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode;

NSLog(@"\n %@ \n %@ \n %@ \n %@", mobileCountryCode, carrierName, isoCountryCode, mobileNetworkCode);

在这里,当SIM卡存在或最后一次使用SIM卡信息时,carrierName将返回姓名。但如果没有安装SIM卡,其他的将是null

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42874051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档