प्रोग्राम के अनुसार फ़ोन कॉल करें


138

मैं iPhone पर प्रोग्रामिक रूप से फोन कॉल कैसे कर सकता हूं? मैंने निम्नलिखित कोड की कोशिश की लेकिन कुछ नहीं हुआ:

NSString *phoneNumber = mymobileNO.titleLabel.text;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

2
कोड इन स्विफ्ट के लिए आप इस उत्तर का अनुसरण कर सकते हैं stackoverflow.com/a/29869456/3950397
साहिल कपूर

जवाबों:


189

संभवतः mymobileNO.titleLabel.text मान में स्कीम शामिल नहीं है : //

आपका कोड इस तरह दिखना चाहिए:

NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

3
कोई मौका नहीं है कि हम इस दृष्टिकोण के साथ मूल आवेदन पर वापस जा सकते हैं।
आर्टेम ओबोट्रोव 10

4
मुझे लगता है कि मेलन का दृष्टिकोण बेहतर है क्योंकि यह उपयोगकर्ता को पहले संकेत देता है, और फिर कॉल के बाद आपके ऐप पर वापस आ जाता है। बस canOpenurL का उपयोग करना सुनिश्चित करें: और टेलबैक में वापस आना: प्रांप्ट करना क्योंकि टेलप्रोम आधिकारिक नहीं है और भविष्य के iOS संस्करण में हटाया जा सकता है।
joel.d

मैं ऐप्पल वॉच से फोन कॉल कैसे कर सकता हूं।
अहद खान

1
क्या मैं स्पीकर को प्रोग्रामिक रूप से चालू कर सकता हूं कॉल के लिए इस तरह से उत्पन्न हुआ?
अनिरुद्ध

यहां तक ​​कि टेल: 1234567890 भी ठीक उसी तरह काम करता है जैसे कैसे बताएं: // 1234567890 यह काम करता है
दुरई अमुथन।

218

मूल ऐप पर वापस जाने के लिए आप telprompt: // का उपयोग कर सकते हैं बजाय tel: // - बताए संकेत तुरंत उपयोगकर्ता को संकेत देगा, लेकिन कॉल समाप्त होने पर यह आपके ऐप पर वापस जाएगा:

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

9
मेरे पास एक प्रश्न है: क्या ऐप्प जो टेलीप्रोमेट का उपयोग करते हैं: // Apple द्वारा अस्वीकार कर दिया जाएगा?
स्मिगॉल

7
मुझे पता है कि यह पुराना है, लेकिन मैंने पाया कि कुछ लोगों ने दावा किया कि उनके ऐप्स को टेलप्रोमप्ट का उपयोग करने की मंजूरी दी गई थी: "मैंने अपने ऐप को सबमिट कर दिया है जो कि uiwebkit के बिना साझा किए गए एप्लिकेशन के साथ टेलीप्रॉम्प्ट का उपयोग करता है और इसे 19 अप्रैल 2013 को सेब द्वारा सफलतापूर्वक स्वीकार किया गया है। पाब्लो। एलेजांद्रो जुनगे "
मार्क मैककॉरले

1
telprompt: // undocumented है और इसलिए कभी भी इस पर भरोसा नहीं किया जाना चाहिए। चीजें बदल सकती हैं, उदाहरण के लिए ऐप्पल किसी दिए गए URL स्कीम का फैसला कर सकता है, जो कुछ विशेष रूप से आवश्यक है या बस अनुमति देने की इच्छा नहीं है, तो आपका ऐप टूट जाएगा।
देवक

@DevC: फिर हमारे ऐप में फोन कॉल फीचर का विकल्प क्या है?
बैशा

@ बासा उपयोग tel://नहींtelprompt://
DevC

24

@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
    }
} 

यह पहले "telprompt: //" URL का उपयोग करने का प्रयास करेगा, और यदि वह विफल रहता है, तो यह "tel: //" URL का उपयोग करेगा। यदि दोनों विफल होते हैं, तो आप 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.
}

10

यहाँ जवाब पूरी तरह से काम कर रहे हैं। मैं सिर्फ स्विफ्ट के लिए क्रेग मेलन के जवाब को परिवर्तित कर रहा हूं। अगर कोई तेजी से जवाब की तलाश में आता है, तो इससे उन्हें मदद मिलेगी।

 var phoneNumber: String = "telprompt://".stringByAppendingString(titleLabel.text!) // titleLabel.text has the phone number.
        UIApplication.sharedApplication().openURL(NSURL(string:phoneNumber)!)

आप भी तेल का उपयोग कर सकते: // telprompt के स्थान पर: //
Shivaay

Let phoneNumber: String = "telprompt: // (titleLabel.text)" UIApplication.sared.openURL (URL (string: phoneNumber)!)
tspentzas

8

यदि आप एक iOS एप्लिकेशन विकसित करने के लिए Xamarin का उपयोग कर रहे हैं, तो यहां आपके एप्लिकेशन के भीतर फ़ोन कॉल करने के लिए C # समतुल्य है:

string phoneNumber = "1231231234";
NSUrl url = new NSUrl(string.Format(@"telprompt://{0}", phoneNumber));
UIApplication.SharedApplication.OpenUrl(url);


4

स्विफ्ट 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")
        }

    }

3

जावा रोबोवीएम समकक्ष:

public void dial(String number)
{
  NSURL url = new NSURL("tel://" + number);
  UIApplication.getSharedApplication().openURL(url);
}

3

ऊपर स्विफ्ट 3 विकल्प की कोशिश की, लेकिन यह काम नहीं किया। मुझे लगता है कि अगर आपको स्विफ्ट 3 पर iOS 10+ के खिलाफ चलना है तो आपको निम्नलिखित की आवश्यकता होगी:

स्विफ्ट 3 (iOS 10+):

let phoneNumber = mymobileNO.titleLabel.text       
UIApplication.shared.open(URL(string: phoneNumber)!, options: [:], completionHandler: nil)



0

'OpenURL:' को पदावनत किया गया: पहले iOS 10.0 में पदावनत किया गया - कृपया OpenURL का उपयोग करें: विकल्प: पूर्णहैंडलर: बजाय

उद्देश्य-सी iOS 10+ उपयोग में:

NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber] options:@{} completionHandler:nil];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.