iOS app调用打电话功能
赶着下班就不多说了, 初始化 UIWebView 名为 _phoneCallWebView,调用如下方法,注意下方 红色区域
#pragma mark -----打电话-------------
- (void)openPhoneCallViewWithphoneNumber:(NSString *)phoneNum
{
if (_phoneCallWebView == nil) {
_phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
}
NSString *newPhoneString = [要调用打电话功能的ViewController dealWithPhoneNumber:phoneNum];
if ([要调用打电话功能的ViewController isMobileNumber:newPhoneString]) {
NSURL* dialUrl = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", newPhoneString]];
if ([[UIApplication sharedApplication] canOpenURL:dialUrl])
{
if (_phoneCallWebView) {
[_phoneCallWebView loadRequest:[NSURLRequest requestWithURL:dialUrl]];
}
else{
[[UIApplication sharedApplication] openURL:dialUrl];
}
}
else
{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"设备不支持" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cacelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:cacelAction];
[self presentViewController:alert animated:YES completion:nil];
alert = nil;
}
} else {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"您选择的号码不合法" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cacelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:cacelAction];
[self presentViewController:alert animated:YES completion:nil];
alert = nil;
}
}
#pragma mark ------处理电话号码
+ (NSString *)dealWithPhoneNumber:(NSString *)phone
{
NSString *newPhone = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];
return newPhone;
}
#pragma mark------判断是否是电话号码
+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
/**
* 手机号码
* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* 联通:130,131,132,152,155,156,185,186
* 电信:133,1349,153,180,189
*/
NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
/**
* 中国移动:China Mobile
* 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
*/
NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
/**
* 中国联通:China Unicom
* 130,131,132,152,155,156,185,186
*/
NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
* 中国电信:China Telecom
* 133,1349,153,180,189
*/
NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
/**
* 大陆地区固话及小灵通
* 区号:010,020,021,022,023,024,025,027,028,029
* 号码:七位或八位
*/
NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
NSPredicate *regextestphs = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];
if (([regextestmobile evaluateWithObject:mobileNum] == YES)
|| ([regextestcm evaluateWithObject:mobileNum] == YES)
|| ([regextestct evaluateWithObject:mobileNum] == YES)
|| ([regextestcu evaluateWithObject:mobileNum] == YES)
|| ([regextestphs evaluateWithObject:mobileNum] == YES))
{
return YES;
}
else
{
return YES; //暂时不做检查
}
}
iOS app调用打电话功能相关推荐
- 苹果手机 微信PHP问题,安卓、ios APP调用微信支付时,页面出现空白 。(php微信支付,app发起微信支付白屏)?...
安卓.ios APP调用微信支付时,页面出现空白 我的后端是用php开发的.我是先调用微信的统一下单生成,生成prepay_id预支付订单号,代码如下: public function send_pa ...
- iOS App “去评分” 功能的几种实现总结
2019独角兽企业重金招聘Python工程师标准>>> 通常 App 都会在它的设置页面或者关于页面添加一个"去评分"选项,或者在用户使用 App 过程中适当时机 ...
- 连接QuickBooks Online实现于IOS App数据同步功能的个人记录
公司项目需要用WebService与QBO实现后台数据同步,由于国内没有做过类似第三方产品接口的资料,前前后后找了N久,终于实现功能,现把实现功能步骤贴上来分享: QBO开发者地址(主要用于创建QBO ...
- 小程序调用打电话功能
wx.makePhoneCall({phoneNumber: 15195986666,success: (result) => {},fail: () => {},complete: () ...
- iOS app被拒------支付功能审核被拒(虚拟产品)Guideline 3.1.1
最近在做项目时,涉及用户付费.于是就找来了支付宝和微信支付的集成教程,按照要求分别开通各自开发平台的开发者账号和商户号.在后台加入了支付的支持,一步步的集成和测试,通过后打包上传到App Store ...
- iOS 调用系统发短信以及打电话功能
先介绍一种最简单的方法: 调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://100 ...
- IOS 程序内调用本地打电话功能-make a phone call
利用openURL接口来调用打电话功能.代码还具备根据正则表达式判断电话好吗输入的合法性. 1 - (void)makeCall:(NSString *)number 2 { 3 NSString * ...
- iOS App Thinning
iOS App Thinning iOS App瘦身功能,不错的文章: 初探 iOS 9 的 App 瘦身功能 App thinning overview (iOS, tvOS, watchOS) 安 ...
- Android相机资源占用,为保护用户隐私Android 11调整相机选项 APP调用相机时只可使用默认相机...
据外媒报道目前谷歌在 Android 11 测试版里带来新的调整,此次调整是关于安卓系统对于默认相机调用选择的. 在安卓旧版本中当APP调用相机时会罗列用户已经安装的所有相机应用,这当然也包括那些自带 ...
最新文章
- mysql的优化之table_open_cache 篇_mysql性能优化之table_open_cache
- 微博基于Flink的机器学习实践
- 解析三层架构(1)---为什么要分层?
- 闯荡北京卖枣的临县人:同有一个“红枣美梦”(2张)
- 计算机硬件 OR CX 1,计算机硬件第三章ppt
- xtrabackup 官方原理
- Win8 Consumer Preview 8250 + VS11 体验
- DataGridView绑定对象数组 c# 1614236580
- Android开发笔记(四十四)动态UI事件
- VB 将文件夹复制到指定目录
- Pulseaudio之nemo(二十二)
- WIN7获取管理员权限
- 计算机物联网软件工程,关于计算机物联网的应用分析
- vb 连接 mysql数据库代码_vb连接access数据库方法和代码
- 设计系统测试用例时应考虑的类型
- Overleaf使用技巧 (latex公式,latex表格,latex图片排版)
- css中英文单词换行的问题
- Axure下载安装汉化
- ThinkPad T14安装系统后,重启经常进不去系统,如何解决
- Python|自定义判断质数的函数
热门文章
- Openstack九大组件
- 西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏
- shell读书笔记9
- GORM模型(Model)定义
- 通过powershell+winscp在远程服务器上跑本地的代码
- Gradle SNAPSHOT 版本更新
- java计算机毕业设计跑腿管理系统源程序+mysql+系统+lw文档+远程调试
- 脊髓损伤患者需对饮食引起注意
- nohup: 重定向标准错误到标准输出
- VS2019 找不到资产文件“xxxx\obj\project.assets.json