2012-05-29 192 views
3

我想在iPhone中撥打類似「## 8004664411」的電話號碼。如何用「##」撥打電話號碼?

如果我撥打的號碼「8004664411」,它works.But如果號碼包含符號「##」,這是行不通的。

這裏是我使用的是不工作的代碼:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://##8004664411"]]; 

是轉義字符錯了嗎?

+0

只是一個SMaL公司評論,根據[RFC3966](HTTP://工具.ietf.org/HTML/rfc3966)和[RFC2806(http://tools.ietf.org/html/rfc2806),你不應該使用'電話:// ''可是電話:'。 – rckoenes

+0

這不是一個答案,所以我把它放在評論中。我的解決方法是將電話號碼(帶有代碼)複製到剪貼板,並要求用戶將其粘貼到手機應用程序中。這是通過iOS的允許,我能得到的唯一方式,它的工作:( –

回答

1

恐怕你根本無法撥打包含許多*或#字符。看起來蘋果出於安全原因不允許他們使用撥號字符串。以下是文檔的相關部分。

從蘋果公司的documentation

爲了防止用戶惡意重定向的電話或改變 電話或賬戶的行爲,將手機應用程序支持 大多數,但不是全部,在特殊字符tel計劃。 特別是,如果URL包含*或#字符,則電話 應用程序不會嘗試撥打相應的電話號碼。 如果您的應用程序接收來自用戶或未知 源URL字符串,你也應該確保該 可能無法在URL是合適的任何特殊字符都正確轉義。對於本地 應用程序,使用stringByAddingPercentEscapesUsingEncoding:的NSString的 方法轉義字符,它返回一個正確 逃脫你的原始字符串的版本。

注:stringByAddingPercentEscapesUsingEncoding:部分不適用於*和#(我試過它是...)

+0

非常感謝您 – user1155543

+0

試了幾種方法:1.在創建聯繫人記錄,並讓用戶觸摸手機值,2.使用的嵌入式網頁視圖,3.使用telprompt URL方案雖然他們中的一些人要求用戶顯式地「確定」所撥打的號碼,但他們都沒有工作,最終我只是把我想要的字符串放在紙板上,並提出了一個警告提問用戶將其粘貼到手機應用程序中。 –