IOS <8では、関数- (BOOL)canOpenURL:(NSURL *)url
を使用できます。
IOS 8では、この関数はiPadでもYES
を返します。 Wi-Fi(または別の新機能)経由の通話に接続されているようですが、iPadで電話をかけることができません。誰かがその機能を検出するより良い方法を知っていますか?
はい、同じ問題が発生しました。 iPadとiPodがcanOpenURLメソッドに対してYES値を返すようです。これは私のために働いたので、以下の私の答えを見てください。カスタムコレクションビューセルがあったので、このコードをawakeFromNibファイルに含めました。ただし、このコードは、その特定のviewControllerのViewDidLoadに記述する必要があります。
プロジェクトに "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.
}
}