簡體   English   中英

如何檢查設備是否可以撥打電話(iOS 8)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM