Ответ 1
Хорошо, поэтому я столкнулся с одной и той же проблемой. Кажется, iPad и iPod возвращают значение YES для метода canOpenURL. Пожалуйста, см. Мой ответ ниже, поскольку это сработало для меня. У меня была специальная ячейка просмотра коллекции, и именно поэтому этот код был в моем файле awakeFromNib. Однако вы должны написать этот код в ViewDidLoad этого perticular viewController.
Обязательно включите "CoreTelephony.Framework" в свой проект.
Включите в контроллер вида следующие файлы:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
- (void)awakeFromNib {
// Initialization code
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]]) {
// Check if iOS Device supports phone calls
CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mnc = [carrier mobileNetworkCode];
// User will get an alert error when they will try to make a phone call in airplane mode.
if (([mnc length] == 0)) {
// Device cannot place a call at this time. SIM might be removed.
} else {
// iOS Device is capable for making calls
}
} else {
// iOS Device is not capable for making calls
}
if ( ! [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"sms:"]]) {
// iOS Device is not capable to send SMS messages.
}
}