Скопируйте/вставьте номер телефона в клавиатуру или наберите бесплатный номер в iOS программно
Я пытаюсь позвонить из своего приложения, используя
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://1800000002"]];
Это бесплатный номер в Индии. Но при наборе номера он преобразуется в +1 (800) -000-000 (конвертирование и высказывание номера на номер United States)
Я упомянул Скопировать/вставить номер телефона в клавиатуру И Когда я "Повторный набор бесплатного номера в Индии, iPhone подключается к США]. Но не удалось найти решение.
Так что, пожалуйста, помогите мне избежать этого звонка ISD. Индийский локальный звонок.
Ответы
Ответ 1
Телпромп хочет номер в международном формате. Поэтому вам нужно преобразовать его в это. Я думаю, что для Индии и числа, которое вы пытаетесь вызвать, это должно быть +911800000002
.
Итак, это должно работать:
NSURL *phoneURL = [NSURL URLWithString:@"telprompt://+911800000002"];
if ([[UIApplication sharedApplication] canOpenURL:phoneURL]) {
[[UIApplication sharedApplication] openURL:phoneURL];
} else {
// handle that case. e.g show number to user so that they can
// type it in a phone manually or copy it to the clipboard and
// notify user about that.
}
В зависимости от того, как работают локальные номера по сравнению с международным форматом в Индии, вам может потребоваться удалить 1
на вашем номере, не уверен в этом.
На стороне: вы всегда должны использовать международный формат при работе с телефонными номерами. В противном случае устройство, которое в настоящее время находится за пределами страны назначения, может позвонить кому-то еще или просто не может поместить вызов вообще.
Ответ 2
Код округа добавлен (для Индии: +91)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://+911800000002"]];
Общий способ узнать код страны
NSLocale *currentLocale = [NSLocale currentLocale]; // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; // get country code, e.g. ES (Spain), FR (France), etc.
Ответ 3
Ваше приложение может быть отклонено Apple, если вы используете telprompt. Используйте следующий код для набора номера программно и убедитесь, что вы вводите номер, который вы хотите вызвать, с правильным форматом.
NSString *phoneNumber = @"+1800000002;
NSString *phoneURLString = [NSString stringWithFormat:@"tel:%@", phoneNumber];
NSURL *phoneURL = [NSURL URLWithString:phoneURLString];
[[UIApplication sharedApplication] openURL:phoneURL];
источник: Замена tel или telprompt для вызова