iOS開(kāi)發(fā)-調(diào)用撥打電話時(shí)包含特殊字符(#、*)不能撥打咋辦

開(kāi)發(fā)中我們調(diào)用系統(tǒng)的打電話方法,一般都是用數(shù)字電話號(hào)去調(diào)用,如果遇到號(hào)碼中包含特殊字符時(shí)直接調(diào)用撥打電話是行不通的

實(shí)驗(yàn)發(fā)現(xiàn)就算轉(zhuǎn)換UTF8編碼也是不可撥打
可用下面的三種方法對(duì)號(hào)碼字符串做處理
第一種 :


//  特殊字符處理
NSString *commandStr = @"*#21#";
NSString *str1 = [commandStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

第二種 :


NSString *commandStr = @"*#21#";
NSString *str2 = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)commandStr, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL, kCFStringEncodingUTF8));

第三種 :


NSString *commandStr = @"*#21#";
NSString  *reportName = [commandStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "].invertedSet];

再撥打就歐了


    NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"telprompt://%@",str1];
    NSURL *callUrl = [NSURL URLWithString:str];
    if (@available(iOS 10.0, *)) {
        [[UIApplication sharedApplication] openURL:callUrl options:@{} completionHandler:nil];
    } else {
        // Fallback on earlier versions
        if([[UIApplication sharedApplication] canOpenURL:callUrl]){
            [[UIApplication sharedApplication] openURL:callUrl];
        }
    }

要是給您解決問(wèn)題了,來(lái)給俺點(diǎn)個(gè)贊????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容