[英]How to check if device can make a phone call (iOS 8)?
在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.
}
}
你可以看看它是不是iPhone。 並且可能與- (BOOL)canOpenURL:(NSURL *)url
。 這樣你就可以避免顯然無法撥打移動電話的設備。
if ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"] ) {
// Make Phone Call
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.