Làm cách nào để gọi điện thoại theo chương trình trên iPhone? Tôi đã thử mã sau đây nhưng không có gì xảy ra:
NSString *phoneNumber = mymobileNO.titleLabel.text;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
Làm cách nào để gọi điện thoại theo chương trình trên iPhone? Tôi đã thử mã sau đây nhưng không có gì xảy ra:
NSString *phoneNumber = mymobileNO.titleLabel.text;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
Câu trả lời:
Có lẽ giá trị mymobileNO.titleLabel.text không bao gồm lược đồ tel: //
Mã của bạn sẽ trông như thế này:
NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
Để quay lại ứng dụng gốc, bạn có thể sử dụng telprompt: // thay vì tel: // - Dấu nhắc sẽ nhắc người dùng trước, nhưng khi cuộc gọi kết thúc, nó sẽ quay lại ứng dụng của bạn:
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
tel://
không sử dụngtelprompt://
Hợp nhất các câu trả lời của @Cristian Radu và @Craig Mellon, và nhận xét từ @ joel.d, bạn nên làm:
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
}
}
Điều này trước tiên sẽ cố gắng sử dụng URL "telprompt: //" và nếu thất bại, nó sẽ sử dụng URL "tel: //". Nếu cả hai đều thất bại, bạn đang cố gắng thực hiện cuộc gọi điện thoại trên iPad hoặc iPod Touch.
Phiên bản Swift:
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.
}
Các câu trả lời ở đây là hoàn hảo. Tôi chỉ chuyển đổi câu trả lời của Craig Mellon sang Swift. Nếu ai đó đến tìm kiếm câu trả lời nhanh chóng, điều này sẽ giúp họ.
var phoneNumber: String = "telprompt://".stringByAppendingString(titleLabel.text!) // titleLabel.text has the phone number.
UIApplication.sharedApplication().openURL(NSURL(string:phoneNumber)!)
Nếu bạn đang sử dụng Xamarin để phát triển ứng dụng iOS, thì đây là C # tương đương để thực hiện cuộc gọi điện thoại trong ứng dụng của bạn:
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)!)
Trong 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")
}
}
Đã thử tùy chọn Swift 3 ở trên, nhưng nó không hoạt động. Tôi nghĩ bạn cần những điều sau nếu bạn chạy với iOS 10+ trên 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);
if let url = NSURL(string: "tel://\(number)"),
UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
'openURL:' không dùng nữa: lần đầu tiên không dùng nữa trong iOS 10.0 - Vui lòng sử dụng openURL: tùy chọn: xongHandler: thay vào đó
trong Objective-c iOS 10+ sử dụng:
NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber] options:@{} completionHandler:nil];