2012-08-31 85 views
0

你好,我希望用户点击一个按钮,该按钮将打开实际的iPhone手机应用程序。拨打Xcode中的电话号码

任何想法或教程如何做到这一点?

+0

为什么人投票这个问题了吗?这是一个非常有效的问题,正是我想要Google的。正如其他人所提到的,解决方案只有一行代码,但您可能会花费数小时搜索Apple文档,试图找到这个宝石。 –

回答

7

您可以轻松拨打电话下面这一行:

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

如何在使用此命令时关闭通话应用程序。 – vualoaithu

+1

使用“telprompt:”而不是“tel”,使电话应用程序在用户完成呼叫后将用户返回到您的应用程序。 –

-3
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:<You button title as phone number>"]]; 
+0

你是否真的觉得有必要复制/粘贴我的答案? – Brayden

+0

这不是复制粘贴我亲爱的,我提供了我的方式来呈现答案,因为你可以看到它。如果我像你一样回答,我真的不明白你为什么会遇到问题。 – BornCoder

+0

你改变的唯一的东西就是文本描述的数值。如果你对这个问题提出了不同的看法,它会有所不同,但是使用现有的答案来以不同的方式展示它并不构成你自己的答案。 – Brayden

0

你不能打开刚才Phone应用程序手动输入号码。正如之前所建议的,您可以从您的应用程序拨打电话,这将打开默认的电话呼叫屏幕,一旦完成该呼叫,它将重定向回您的应用程序。

+0

好的谢谢。我希望你能 –

0

我想补充(不只是复制&再次粘贴相同的答案!),如果你的电话号码包含空格,那么这行的代码将静默失败。

所以,即使电话应用,它的拨打+41 44 123 4567,如果您尝试使用下面的行代码,什么都不会发生。它不会将其识别为电话号码。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:+41 44 123 4567"]]; 

所以,你需要去掉空格,然后拿到电话应用程序拨打该号码,此时它会添加它自己的空间回的电话号码时,显示它!

下面是我使用的代码(如电话号码,目前显示在UILabel称为lblPhone):

NSString* phoneNumber = [self.lblPhone.text stringByReplacingOccurrencesOfString:@" " withString:@""]; 

NSString* actionStr = [NSString stringWithFormat:@"telprompt:%@", phoneNumber]; 

UIDevice *device = [UIDevice currentDevice]; 
if ([[device model] isEqualToString:@"iPhone"]) { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:actionStr]]; 
} 

该代码还检查您是否正在运行在iPad上的应用程序。如果您是,那么我们不想尝试拨打该号码。

此外,作为this线程的回答表明,你会看到我用telprompt:而不是tel:它有两个好处:

首先,它使一个小对话框出现,以检查用户真的想拨打该电话号码:

Nice

其次,当用户结束拨打此号码(和挂断),它会回报你回你的应用程序。奇怪的是,使用tel:不这样做。

(测试用的XCode 5 &的iOS 7.1)