Позвоните на номер, который содержит #. (IPhone SDK) - PullRequest
4 голосов
/ 24 августа 2010

Мне нужно позвонить на номер, который начинается с #. Например, номер телефона в России выглядит как +79123817711, и мне нужно позвонить # 79123817711. Я пытаюсь это:

NSURL *url = [NSURL URLWithString:@"tel://#79123817711"];
[[UIApplication sharedLibrary] openURL:url];

Но его заменили # на% 23 и, конечно, не звонят.

Есть ли способ сделать такие звонки.

Я знаю, это не звонок, это USSD-запрос. Но функция этого ussd выглядит как вызов.

Ответы [ 4 ]

6 голосов
/ 24 августа 2010

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

Так что, не повезло.

0 голосов
/ 01 мая 2019

Я добился этого путем кодирования ussd и передачи его в URL, и он работает просто отлично

Вот пример:

extension String {
      /// Calling ussd number
      func callUSSD() {
          guard let urlString = self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return }
          guard let url = URL(string: "tel://\(urlString)") else { return }
         UIApplication.shared.open(url, options: [:])
    }
}

Использование:

@IBAction func callTapped(_ sender: UIButton) {
    "*1124#".callUSSD()        
}
0 голосов
/ 07 апреля 2019

Я попробовал iOS 10. Но он не работал.Но с iOS 12 теперь работает.не знаю как.

NSString *mobileNocleanedString = @"*454*200#";

NSURL *phoneUrl = [NSURL URLWithString:[NSString  stringWithFormat:@"tel:%@",mobileNocleanedString]];

if ([[UIApplication sharedApplication] canOpenURL:phoneUrl]) {
    [[UIApplication sharedApplication] openURL:phoneUrl];
}
0 голосов
/ 11 декабря 2018

просто замените * на% 2a и # на% 23

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...