Как я могу набирать номер телефона, который включает число и код доступа программно в iOS?
Например:
номер: 900-3440-567
Код доступа: 65445
Как я могу набирать номер телефона, который включает число и код доступа программно в iOS?
Например:
номер: 900-3440-567
Код доступа: 65445
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];
}
следуйте инструкциям
для вызова номера -
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];
Вы можете программно набирать номера телефонов с помощью метода UIApplication
openURL:
(см. пример ниже). Я не уверен, поддерживаются ли коды доступа, но это, по крайней мере, отправная точка.
NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"];
[[UIApplication sharedApplication] openURL:URL];
Изменить: См. Ссылка на схему URL-адресов Apple и Ссылка на класс UIApplication для получения дополнительной информации.
Я не знаю, действительно ли вы нашли решение для передачи кода доступа, но для меня этот код работал:
NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"];
Это приведет к строке набора со следующими значениями:
tel:9003440567,65445
Остальные части управляются телефонным приложением iOS со следующей командой:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:dialstring]];
,
в строке вызывает паузу в вашей телефонной системе (той, где вы хотите получить доступ в конференц-зал) сразу после набора первого номера и установления соединения. Таким образом, у телефонной системы есть время, чтобы спросить вас о коде доступа (я думаю, он должен спросить вас, как работает наша система). И после этого ваш код доступа должен быть передан.
БУДЬТЕ ЗНАКОМ. Ваш код доступа будет передан несекретным способом. Например: Ваш отображаемый код доступа будет отображаться в iPhone-приложении iPhone следующим образом: 9003440567, 65445
С помощью этого пользователя можно перенаправить вызов и после его переадресации автоматически переадресовывается в приложение. Он работает для меня и уверен в этом.
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];
}
Вот автономное решение в 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")
для совершения вызова; надеюсь, что это поможет!
Вы можете использовать телефонные URL для вызова приложения "Телефон" для набора номера для вас. Смотрите reference.
Недостатком является то, что, как только вызов будет завершен, пользователь будет входить в приложение "Телефон". Но я боюсь, что нет решения этой проблемы. iOS не позволяет любому приложению напрямую инициировать вызов из-за соображений безопасности и конфиденциальности.
Вы можете использовать запятую для ввода паузы при наборе номера.
Невозможно набрать программный номер телефона, который включает номер и код доступа.
Библиотека разработчиков Apple предоставляет следующую информацию:
"... Приложение Phone поддерживает большинство специальных символов в телефонной схеме, но не все. В частности, если URL содержит символы * или #, приложение" Телефон " не пытается набрать соответствующий номер телефона."
Смотрите: Ссылка на схему URL Apple
Существует несколько способов набрать номер телефона и описанный способ:
[[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/