Myślę, że podejście Mellon jest lepsze, ponieważ najpierw monituje użytkownika, a następnie wraca do aplikacji po wywołaniu. Po prostu upewnij się, że używasz canOpenURL: i wróć do zachęty tel :, ponieważ telprompt nie jest oficjalny i może zostać usunięty w przyszłej wersji iOS.
Aby wrócić do oryginalnej aplikacji, możesz użyć telprompt: // zamiast tel: // - monit tell najpierw zapyta użytkownika, ale po zakończeniu połączenia powróci do Twojej aplikacji:
Wiem, że to jest stare, ale znalazłem kilka osób twierdzących, że ich aplikacje zostały zatwierdzone za pomocą telprompt: „Przesłałem moją aplikację, która używa telprompt ze współdzieloną aplikacją bez zestawu uiwebkit i została pomyślnie zatwierdzona przez firmę Apple. Odpowiedział: 19 stycznia 2013 Pablo Alejandro Junge ”
telprompt: // jest nieudokumentowany i dlatego nigdy nie należy na nim polegać. Wszystko może się zmienić, na przykład Apple może zdecydować, że dany schemat adresu URL jest czymś, czego potrzebuje wyłącznie lub po prostu nie chce na to zezwalać, wtedy Twoja aplikacja się zepsuje.
Najpierw spróbuje użyć adresu URL „telprompt: //”, a jeśli to się nie powiedzie, użyje adresu URL „tel: //”. Jeśli oba zawodzą, próbujesz nawiązać połączenie telefoniczne na iPadzie lub iPodzie Touch.
Szybka wersja:
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}}}elseif(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.}
Odpowiedzi tutaj działają doskonale. Właśnie konwertuję odpowiedź Craiga Mellona na Swift. Jeśli ktoś przyjdzie szukać szybkiej odpowiedzi, to mu pomoże.
var phoneNumber:String="telprompt://".stringByAppendingString(titleLabel.text!)// titleLabel.text has the phone number.UIApplication.sharedApplication().openURL(NSURL(string:phoneNumber)!)
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)}elseif(shared.canOpenURL(url)){
shared.openURL(url)}else{
print("unable to open url for call")}}
Wypróbowałem opcję Swift 3 powyżej, ale nie zadziałała. Myślę, że potrzebujesz następujących elementów, jeśli chcesz korzystać z systemu iOS 10+ w Swift 3:
Swift 3 (iOS 10+):
let phoneNumber = mymobileNO.titleLabel.text
UIApplication.shared.open(URL(string: phoneNumber)!, options:[:], completionHandler: nil)
if let url = NSURL(string:"tel://\(number)"),UIApplication.sharedApplication().canOpenURL(url){UIApplication.shared.open(url, options:[:], completionHandler: nil)}
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.