Как я могу программно позвонить на iPhone? Я попробовал следующий код, но ничего не произошло:
NSString *phoneNumber = mymobileNO.titleLabel.text;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
ios
objective-c
iphone
telephony
phone-call
user564963
источник
источник
Ответы:
Вероятно, значение mymobileNO.titleLabel.text не включает схему tel: //
Ваш код должен выглядеть так:
NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
источник
Чтобы вернуться к исходному приложению, вы можете использовать telprompt: // вместо tel: // - подсказка tell сначала запросит пользователя, но когда вызов будет завершен, он вернется в ваше приложение:
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
источник
tel://
неtelprompt://
Объединяя ответы @Cristian Radu и @Craig Mellon и комментарий от @ joel.d, вы должны сделать:
NSURL *urlOption1 = [NSURL URLWithString:[@"telprompt://" stringByAppendingString:phone]]; NSURL *urlOption2 = [NSURL URLWithString:[@"tel://" stringByAppendingString:phone]]; NSURL *targetURL = nil; if ([UIApplication.sharedApplication canOpenURL:urlOption1]) { targetURL = urlOption1; } else if ([UIApplication.sharedApplication canOpenURL:urlOption2]) { targetURL = urlOption2; } if (targetURL) { if (@available(iOS 10.0, *)) { [UIApplication.sharedApplication openURL:targetURL options:@{} completionHandler:nil]; } else { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" [UIApplication.sharedApplication openURL:targetURL]; #pragma clang diagnostic pop } }
Сначала он попытается использовать URL-адрес «telprompt: //», а если это не удастся, будет использоваться URL-адрес «tel: //». Если оба не работают, вы пытаетесь позвонить на iPad или iPod Touch.
Быстрая версия:
let phone = mymobileNO.titleLabel.text let phoneUrl = URL(string: "telprompt://\(phone)" let phoneFallbackUrl = URL(string: "tel://\(phone)" if(phoneUrl != nil && UIApplication.shared.canOpenUrl(phoneUrl!)) { UIApplication.shared.open(phoneUrl!, options:[String:Any]()) { (success) in if(!success) { // Show an error message: Failed opening the url } } } else if(phoneFallbackUrl != nil && UIApplication.shared.canOpenUrl(phoneFallbackUrl!)) { UIApplication.shared.open(phoneFallbackUrl!, options:[String:Any]()) { (success) in if(!success) { // Show an error message: Failed opening the url } } } else { // Show an error message: Your device can not do phone calls. }
источник
Ответы здесь отлично работают. Я просто конвертирую ответ Крейга Меллона в Swift. Если кто-то придет за быстрым ответом, это ему поможет.
var phoneNumber: String = "telprompt://".stringByAppendingString(titleLabel.text!) // titleLabel.text has the phone number. UIApplication.sharedApplication().openURL(NSURL(string:phoneNumber)!)
источник
Если вы используете Xamarin для разработки приложения iOS, вот эквивалент C # для телефонного звонка в вашем приложении:
string phoneNumber = "1231231234"; NSUrl url = new NSUrl(string.Format(@"telprompt://{0}", phoneNumber)); UIApplication.SharedApplication.OpenUrl(url);
источник
Swift 3
let phoneNumber: String = "tel://3124235234" UIApplication.shared.openURL(URL(string: phoneNumber)!)
источник
В Swift 3.0
static func callToNumber(number:String) { let phoneFallback = "telprompt://\(number)" let fallbackURl = URL(string:phoneFallback)! let phone = "tel://\(number)" let url = URL(string:phone)! let shared = UIApplication.shared if(shared.canOpenURL(fallbackURl)){ shared.openURL(fallbackURl) }else if (shared.canOpenURL(url)){ shared.openURL(url) }else{ print("unable to open url for call") } }
источник
Эквивалент Java RoboVM:
public void dial(String number) { NSURL url = new NSURL("tel://" + number); UIApplication.getSharedApplication().openURL(url); }
источник
Пробовал вариант Swift 3, описанный выше, но он не работал. Я думаю, вам понадобится следующее, если вы собираетесь работать с iOS 10+ на Swift 3:
Swift 3 (iOS 10+):
let phoneNumber = mymobileNO.titleLabel.text UIApplication.shared.open(URL(string: phoneNumber)!, options: [:], completionHandler: nil)
источник
let phone = "tel://\("1234567890")"; let url:NSURL = NSURL(string:phone)!; UIApplication.sharedApplication().openURL(url);
источник
Swift
if let url = NSURL(string: "tel://\(number)"), UIApplication.sharedApplication().canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) }
источник
'openURL:' устарел: впервые не рекомендуется в iOS 10.0 - вместо этого используйте openURL: options: ЗавершениеHandler:
в Objective-c iOS 10+ используйте:
NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber] options:@{} completionHandler:nil];
источник