Наберите номер телефона с кодом доступа программно в iOS - PullRequest
47 голосов
/ 28 марта 2011

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

Например:

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

Ответы [ 9 ]

107 голосов
/ 28 марта 2011
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];
}
34 голосов
/ 28 марта 2011

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

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];

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

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

NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];
19 голосов
/ 28 марта 2011

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

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

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

7 голосов
/ 06 декабря 2013

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

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

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

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

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

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

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

3 голосов
/ 25 апреля 2015

Вот автономное решение в 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") для совершения вызова;надеюсь, это поможет!

3 голосов
/ 12 февраля 2014

Используя этого пользователя, он может перенаправить вызов, и после вызова он / она автоматически перенаправляется в приложение.Это работает для меня и уверен в этом.

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];
}
2 голосов
/ 04 сентября 2012

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

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

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

См .: Справочник по схеме Apple URL

2 голосов
/ 28 марта 2011

Вы можете использовать URL-адреса телефона, чтобы вызвать приложение Телефон для набора номера для вас. См. Это ссылка .

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

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

1 голос
/ 08 апреля 2014

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

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

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

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

+ (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/

...