Как использовать tel: с * (звездочка, звездочка) или # (хеш, фунт) на iOS? - PullRequest
26 голосов
/ 11 января 2011

Я пытаюсь инициировать вызов на iPhone с URL-адресом tel, в котором есть *. Он правильно отображает диалог вызова, но при нажатии кнопки вызова возвращается к сафари.

<a href="tel:123*12">Test</a>

Ответы [ 3 ]

33 голосов
/ 11 января 2011

Эта документация от Apple должна быть полезной:

Чтобы пользователи не могли злонамеренно перенаправлять телефонные звонки или изменять поведение телефона или учетной записи, приложение Телефонподдерживает большинство, но не все специальные символы в схеме тел.В частности, если URL-адрес содержит символы * или #, приложение «Телефон» не пытается набрать соответствующий телефонный номер.

ОБНОВЛЕНИЕ (2 января 2018 г.) : Информация, упомянутая здесь, может быть устаревшей.Пожалуйста, обратитесь к новой документации, если Apple ослабила эти правила в своих новых SDK.Обратитесь к ответу Хусама.

7 голосов
/ 01 ноября 2017

iOS11 теперь позволяет нам звонить по номеру * или #


Swift Пример кода

    let number = "*111*12345#"
    let app = UIApplication.shared
    if let encoded = number.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
        let u = "tel://\(encoded)"
        if let url = URL(string:u) {
            if app.canOpenURL(url) {
                app.open(url, options: [:], completionHandler: { (finished) in

                })
                return
            }
        }
    }
5 голосов
/ 25 февраля 2017

Утвержденный ответ неверен, по крайней мере, больше. Я тестировал как веб-страницу , так и приложение, которое может набирать номер с помощью специальных символов # и *. Что вам нужно сделать, если вы хотите использовать эти символы в любом случае, так это кодировать их.

В HTML # становится %23 и * не требует экранирования

Если вы используете Swift, вы можете закодировать вашу ссылку и нажать ее из приложения, используя эту функцию:

//number format example (commas are pauses): 123-456-7890,,555#,1234
fileprivate func callNumber(_ number: String) {
    let dialString = "telprompt://" + number
    if let escapedDialString = dialString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
      if let dialURL = URL(string: escapedDialString) {
        UIApplication.shared.openURL(dialURL)
      }
    }
  }
...