Скопируйте / вставьте номер телефона в клавиатуру или наберите бесплатный номер в iOS программно

Я пытаюсь позвонить из моего приложения, используя

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://1800000002"]];

Это бесплатный номер в Индии. Но во время набора номера он конвертируется в +1(800)-000-000 (преобразование номера и повторение набора номера в номер США).

Я сослался скопировать / вставить номер телефона в клавиатуру. И когда я набираю бесплатный номер в Индии, iPhone соединяет США]. Но не смог найти решение.

Так может кто-нибудь, пожалуйста, помогите мне избежать этого вызова ISD местного вызова Индии.

3 ответа

Телпромпт хочет номер в международном формате. Так что вам нужно преобразовать это в это. Я думаю, что для Индии и номера, который вы пытаетесь назвать, это должно быть +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 на свой номер, не уверен насчет этого.

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

Добавлен код графства (для Индии: +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.

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

NSString *phoneNumber = @"+1800000002;
NSString *phoneURLString = [NSString stringWithFormat:@"tel:%@", phoneNumber];
NSURL *phoneURL = [NSURL URLWithString:phoneURLString];
[[UIApplication sharedApplication] openURL:phoneURL];

источник: замена тел или телпромпт звонить

Другие вопросы по тегам