[ios] 신속하게 전화 걸기
특정 번호를 사용하지 않고 변수로 호출되는 번호로 전화를 걸거나 적어도 전화기에서 번호를 가져 오라고 말하려고합니다. 변수에서 호출되는이 숫자는 파서를 사용하거나 웹 사이트 SQL에서 가져 와서 검색 한 숫자입니다. 함수로 변수에 저장된 전화 번호를 호출하려고하는 버튼을 만들었지 만 아무 소용이 없었습니다. 감사합니다.
func callSellerPressed (sender: UIButton!){
//(This is calls a specific number)UIApplication.sharedApplication().openURL(NSURL(string: "tel://######")!)
// This is the code I'm using but its not working
UIApplication.sharedApplication().openURL(NSURL(scheme: NSString(), host: "tel://", path: busPhone)!)
}
답변
단지 시도:
if let url = NSURL(string: "tel://\(busPhone)") where UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
전화 번호가 busPhone
.
NSURL
의 init(string:)
너무 사용하여, 선택 사양 반환을 if let
우리가 확인 url
A는 NSURL
(이 아닌 NSURL?
의해 반환을 init
).
Swift 3 :
if let url = URL(string: "tel://\(busPhone)"), UIApplication.shared.canOpenURL(url) {
if #available(iOS 10, *) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.openURL(url)
}
}
다음과 같은 이유로 iOS 10 이상인지 확인해야합니다.
‘openURL’은 iOS 10.0에서 더 이상 사용되지 않습니다.
답변
iOS 10, Swift 3 의 자체 솔루션 :
private func callNumber(phoneNumber:String) {
if let phoneCallURL = URL(string: "tel://\(phoneNumber)") {
let application:UIApplication = UIApplication.shared
if (application.canOpenURL(phoneCallURL)) {
application.open(phoneCallURL, options: [:], completionHandler: nil)
}
}
}
을 사용 callNumber("7178881234")
하여 전화를 걸 수 있어야합니다 .
답변
스위프트 4,
private func callNumber(phoneNumber:String) {
if let phoneCallURL = URL(string: "telprompt://\(phoneNumber)") {
let application:UIApplication = UIApplication.shared
if (application.canOpenURL(phoneCallURL)) {
if #available(iOS 10.0, *) {
application.open(phoneCallURL, options: [:], completionHandler: nil)
} else {
// Fallback on earlier versions
application.openURL(phoneCallURL as URL)
}
}
}
}
답변
Swift 3.0 및 iOS 10 이상
func phone(phoneNum: String) {
if let url = URL(string: "tel://\(phoneNum)") {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url as URL)
}
}
}
답변
좋아, 도움을 받아 알아 냈어. 또한 전화 번호가 유효하지 않은 경우를 대비하여 멋진 작은 경고 시스템을 설치했습니다. 내 문제는 내가 올바르게 부르고 있었지만 번호에 공백과 ( “123456-7890”)과 같은 원하지 않는 문자가있었습니다. UIApplication은 귀하의 번호가 ( “1234567890”) 인 경우에만 작동하거나 수락합니다. 따라서 기본적으로 숫자 만 가져 오는 새 변수를 만들어 공백과 유효하지 않은 문자를 제거합니다. 그런 다음 UIApplication을 사용하여 해당 번호를 호출합니다.
func callSellerPressed (sender: UIButton!){
var newPhone = ""
for (var i = 0; i < countElements(busPhone); i++){
var current:Int = i
switch (busPhone[i]){
case "0","1","2","3","4","5","6","7","8","9" : newPhone = newPhone + String(busPhone[i])
default : println("Removed invalid character.")
}
}
if (busPhone.utf16Count > 1){
UIApplication.sharedApplication().openURL(NSURL(string: "tel://" + newPhone)!)
}
else{
let alert = UIAlertView()
alert.title = "Sorry!"
alert.message = "Phone number is not available for this business"
alert.addButtonWithTitle("Ok")
alert.show()
}
}
답변
위의 답변은 부분적으로 정확하지만 “tel : //”에는 한 가지 문제 만 있습니다. 통화가 끝나면 앱이 아닌 홈 화면으로 돌아갑니다. “telprompt : //”를 사용하는 것이 더 좋으므로 앱으로 돌아갑니다.
var url:NSURL = NSURL(string: "telprompt://1234567891")!
UIApplication.sharedApplication().openURL(url)
답변
Swift 3, iOS 10
func call(phoneNumber:String) {
let cleanPhoneNumber = phoneNumber.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
let urlString:String = "tel://\(cleanPhoneNumber)"
if let phoneCallURL = URL(string: urlString) {
if (UIApplication.shared.canOpenURL(phoneCallURL)) {
UIApplication.shared.open(phoneCallURL, options: [:], completionHandler: nil)
}
}
}