Скопируйте/вставьте номер телефона в клавиатуру или наберите бесплатный номер в 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 для вызова