2009-03-20 7 views

ответ

113

Вы можете инициировать вызов

https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html

Так что это, вероятно, работать

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:12125551212"]]; 
+0

Я сделал то, что вы предложили, но в симуляторе iphone ничего не произошло. как форза. Не следует закрыть приложение и начать набор номера телефона? – LolaRun

+24

Симулятор не имеет телефона. Проверьте его на устройстве. –

+1

@LouFranco Спасибо за подсказку помогли мне – shox

-1

Это будет либо очень зависит от платформы, или вы должны будете использовать библиотеку оболочки для объясняйте различия между платформами, поэтому вам лучше указать, на какой платформе это предназначено. В общем, на большинстве платформ доступны различные API телефонии.

В системах Windows есть, например, «TAPI», также могут быть несколько отличаться, если вы ориентируетесь на цифровую телефонную систему, такую ​​как ISDN, потому что есть другие доступные API.

+1

Вопрос задал Objective-C хотя, который в этом случае _probably_ означает iOS – powerj1984

10

хорошо, если вы говорите об использовании Objective-C, чтобы сделать телефонный звонок на Iphone, то вы можете сделать что-то вроде этого:

NSURL *phoneNumber = [[NSURL alloc] initWithString: @"tel:867-5309"]; 
[[UIApplication sharedApplication] openURL: phoneNumber]; 

Если говорить о выполнении этого на макинтош, хорошо , то, как и другие, упоминалось, что это специфически основано на количестве таких вещей, как: если вы используете voip, модем, соединяющий что-то вроде коробки Asterisks и т. д.

22

Это подрезано из проекта, который я сделал только это:

NSString *phoneStr = [[NSString alloc] initWithFormat:@"tel:%@",phone_number]; 
NSURL *phoneURL = [[NSURL alloc] initWithString:phoneStr]; 
[[UIApplication sharedApplication] openURL:phoneURL]; 
[phoneURL release]; 
[phoneStr release]; 
+1

Пожалуйста, используйте autorelease, если у вас нет причин не делать этого. Также вы можете использовать 'stringWithFormat', который уже предоставляет вам автореализованный объект. –

+2

@Yar - На самом деле, пожалуйста, избегайте autorelease, если у вас нет причин. – Abizern

+0

@ Абизерн, почему? Вы беспокоитесь о нехватке памяти или производительности? До тех пор, пока мы не получим ARC (который мы уже набираем на iOS) или gc (например, на MacOS), autorelease делает код намного более чистым, без каких-либо накладных расходов. Если вы не находитесь в длинном цикле, я (и многие другие люди, я могу привести это, если хотите), считают, что автореферат предпочтительнее. –

17

Это может быть также полезно знать, как предложить пользователю вызвать номер:

NSURL *phoneNumber = [NSURL URLWithString:@"telprompt://13232222222"]; 
[[UIApplication sharedApplication] openURL:phoneNumber]; 

telprompt дает пользователю выбор, чтобы поместить вызов или отменить делает вызов перед телефонным циферблатов. Две косые черты после двоеточия являются необязательными.

0
NSString *phoneNumber = @"Phone number here"; 
UIWebView *webView = [[UIWebView alloc] init]; 
NSURL *url = [NSURL URLWithString:numberString];   
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
webView.dataDetectorTypes = UIDataDetectorTypeNone; 
[webView loadRequest:requestURL]; 
3

удалить пустые пространства, в ТЕЛЕФОН

NSString *phoneNumberString = @"123 456"; 
phoneNumberString = [phoneNumberString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
phoneNumberString = [NSString [email protected]"tel:%@", phoneNumberString]; 
NSURL *phoneNumberURL = [NSURL URLWithString:phoneNumberString]]; 
[[UIApplication sharedApplication] openURL:phoneNumberURL]; 
2

OpenURL является устаревшим.

Теперь используйте:

UIApplication *application = [UIApplication sharedApplication]; 
[application openURL:[NSURL URLWithString: @"tel:12125551212"] options:@{} completionHandler:nil];