在iOS应用程序中拨打电话

时间:2011-06-12 16:47:10

标签: ios objective-c phone-call

我有一些代码尝试在应用程序中进行调用,但它似乎没有工作:

    UIApplication *myApp = [UIApplication sharedApplication];
    NSString *theCall = [NSString stringWithFormat:@"tel://%@",phone];
    NSLog(@"making call with %@",theCall);
    [myApp openURL:[NSURL URLWithString:theCall]];

有时候,变量phone就是@"(102) 222-2222"。如何使用这样的电话号码拨打电话?我是否需要手动提取数字并删除所有额外的标点符号?

3 个答案:

答案 0 :(得分:80)

烨。你需要自己解决这些问题。或者您可以使用下面的代码段...

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];
NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];

注意:您可能会想要使用-stringByTrimmingCharactersInSet:,但只会删除字符串开头和结尾的字符,而不是它们出现在中间。

答案 1 :(得分:23)

要返回原始应用程序,您可以使用telprompt://而不是tel:// - tell提示符将首先提示用户,但是当调用完成后,它将返回到您的应用程序:

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

只是对上述答案的更新。

答案 2 :(得分:1)

这是一个简单的方法,可用于在通话结束后拨打电话并返回应用。

将以下内容添加到.m文件

.recentconcert{
    background-image: url('https://i.scdn.co/image/8b0172dd313c66872cfd01288cffec136b3e13b2');
    background-repeat: no-repeat;
    background-position: center;
    width:50%;
    height:500px;
    float:left;     
}

.whitebox{
    background-color: rgba(255,255,255,.6);
    width:100%;
    margin-top:450px;
    height:50px;
    text-align:center;
}

然后在以下位置添加以下代码:

- (void) dialNumber:(NSString*) number{
number = [@"telprompt://" stringByAppendingString:number];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:number]];
}