您好,我希望用户单击一个按钮,该按钮将打开实际的 iPhone 手机应用程序。
关于如何做到这一点的任何想法或教程?
您可以使用以下线路轻松拨打电话:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:12125551212"]];
只需添加(而不只是再次复制和粘贴相同的答案!)如果您的电话号码包含任何空格,那么这行代码将默默地失败。
因此,即使电话应用程序说它正在拨打 +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 上运行该应用程序。如果您是,那么我们不想尝试拨打该号码。
此外,正如该线程上的答案所暗示的那样,您会看到我使用过 telprompt:
而不是tel:
它有两个优点:
首先,它会出现一个小对话框,以检查用户是否真的想拨打该电话号码:
其次,当用户完成呼叫此号码(并挂断)时,它会将您返回到您的应用程序。奇怪的是,使用tel:
不会这样做。
(使用 XCode 5 和 iOS 7.1 测试)
您不能只打开电话应用程序来手动输入号码。正如之前建议的那样,您可以从您的应用程序拨打电话,这将打开默认的电话呼叫屏幕,一旦您完成该呼叫,它将重定向回您的应用程序。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:<You button title as phone number>"]];