Программно набирать номер телефона с кодом доступа

Как я могу набирать номер телефона, который включает число и код доступа программно в iOS?

Например:

номер: 900-3440-567
Код доступа: 65445

Ответ 1

UIDevice *device = [UIDevice currentDevice];
if ([[device model] isEqualToString:@"iPhone"] ) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:130-032-2837"]]];
} else {
    UIAlertView *notPermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [notPermitted show];
    [notPermitted release];
}

Ответ 2

следуйте инструкциям

http://www.makebetterthings.com/blogs/iphone/open-phone-sms-email-map-and-browser-apps-in-iphone-sdk/

для вызова номера -

NSURL *url = [NSURL URLWithString:@"tel://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];

чтобы открыть приложение после завершения использования -

(Примечание: telprompt недокументирован)

NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];

Ответ 3

Вы можете программно набирать номера телефонов с помощью метода UIApplication openURL: (см. пример ниже). Я не уверен, поддерживаются ли коды доступа, но это, по крайней мере, отправная точка.

NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"];
[[UIApplication sharedApplication] openURL:URL];

Изменить: См. Ссылка на схему URL-адресов Apple и Ссылка на класс UIApplication для получения дополнительной информации.

Ответ 4

Я не знаю, действительно ли вы нашли решение для передачи кода доступа, но для меня этот код работал:

NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"]; 

Это приведет к строке набора со следующими значениями: tel:9003440567,65445

Остальные части управляются телефонным приложением iOS со следующей командой:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:dialstring]];

, в строке вызывает паузу в вашей телефонной системе (той, где вы хотите получить доступ в конференц-зал) сразу после набора первого номера и установления соединения. Таким образом, у телефонной системы есть время, чтобы спросить вас о коде доступа (я думаю, он должен спросить вас, как работает наша система). И после этого ваш код доступа должен быть передан.

БУДЬТЕ ЗНАКОМ. Ваш код доступа будет передан несекретным способом. Например: Ваш отображаемый код доступа будет отображаться в iPhone-приложении iPhone следующим образом: 9003440567, 65445

Ответ 5

С помощью этого пользователя можно перенаправить вызов и после его переадресации автоматически переадресовывается в приложение. Он работает для меня и уверен в этом.

if ([[device model] isEqualToString:@"iPhone"] ) {

    NSString *phoneNumber = [@"telprompt://" stringByAppendingString:cellNameStr];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

} else {

    UIAlertView *warning =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

    [warning show];
}

Ответ 6

Вот автономное решение в Swift:

private func callNumber(phoneNumber:String) {
  if let phoneCallURL:NSURL = NSURL(string: "tel://\(phoneNumber)") {
    let application:UIApplication = UIApplication.sharedApplication()
    if (application.canOpenURL(phoneCallURL)) {
      application.openURL(phoneCallURL);
    }
  }
}

Теперь вы можете использовать callNumber("7178881234") для совершения вызова; надеюсь, что это поможет!

Ответ 7

Вы можете использовать телефонные URL для вызова приложения "Телефон" для набора номера для вас. Смотрите reference.

Недостатком является то, что, как только вызов будет завершен, пользователь будет входить в приложение "Телефон". Но я боюсь, что нет решения этой проблемы. iOS не позволяет любому приложению напрямую инициировать вызов из-за соображений безопасности и конфиденциальности.

Вы можете использовать запятую для ввода паузы при наборе номера.

Ответ 8

Невозможно набрать программный номер телефона, который включает номер и код доступа.

Библиотека разработчиков Apple предоставляет следующую информацию:

"... Приложение Phone поддерживает большинство специальных символов в телефонной схеме, но не все. В частности, если URL содержит символы * или #, приложение" Телефон " не пытается набрать соответствующий номер телефона."

Смотрите: Ссылка на схему URL Apple

Ответ 9

Существует несколько способов набрать номер телефона и описанный способ:

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "tel: 555-555-5555" ]

Это правильный способ сделать это, однако у него есть ряд проблем. Сначала он неправильно запрашивает пользователя, а во-вторых, он не возвращает пользователя в приложение, когда телефонный звонок завершен. Чтобы правильно поместить телефонный звонок, вы должны вызвать запрос перед вызовом, чтобы вы не удивили пользователя, и вы должны вернуть пользователя в приложение после завершения вызова.

Оба они могут быть выполнены без использования частного API, как это предлагается в некоторых ответах. Рекомендуемый подход использует telprompt api, но он не использует частную копию вызова и вместо этого создает веб-представление, позволяющее использовать будущую совместимость.

+ (void)callWithString:(NSString *)phoneString
{
    [self callWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneString]]];
}
+ (void)callWithURL:(NSURL *)url
{
    static UIWebView *webView = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{  
        webView = [UIWebView new];
    });
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}

Здесь приведен пример проекта и дополнительная информация: http://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an-ios-app/