Программно набирать номер телефона с кодом доступа
Как я могу набирать номер телефона, который включает число и код доступа программно в 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/