我有申请使用电话卡拨打自动电话。因此,我需要解析电话号码到nsurl这样打电话。
UIApplication *myApp = [UIApplication sharedApplication];
NSURL *telURL = [NSURL URLWithString:@"tel://18005333333,,,1#,,,421#,,,959538988"];
[myApp openURL:telURL];
我注意到如果有超过1个,我就无法解析NSURL。它总是让我没有。如果我需要超过1#,我可以知道如何解析NSURL吗?
答案 0 :(得分:1)
如果您可以要求iOS 7.0或更高版本,那么我建议您使用NSURLComponents
:
NSURLComponents* components = [[NSURLComponents alloc] init];
components.scheme = @"tel";
components.host = @"18005333333,,,1#,,,421#,,,959538788";
NSURL* telURL = components.URL;
[myApp openURL:telURL];
否则,您可能需要使用CFURLCreateStringByAddingPercentEscapes()
强制转义“#”字符。在整个URL而不是组件上使用该功能并不正确,但如果您只是在这些类型的URL上使用它而没有除方案和电话号码之外的其他组件,它应该可以工作。
答案 1 :(得分:0)
在您的情况下,您需要使用NSMutableURLRequest而不是openURL,并单独添加参数。
修改强> 试试这个
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:@"tel://18005333333"];
[request setValue:@"1#" forHTTPHeaderField:@",,,"];
[[UIApplication sharedApplication] openURL:request.URL];
答案 2 :(得分:0)
首先删除电话号码字符串中的#,如果拨打电话无关紧要。如下所示
NSString *phoneString=@"18005333333,,,1#,,,421#,,,959538788";
NSString *phonenumberstring = [phoneString stringByReplacingOccurrencesOfString:@"#" withString:@""];
NSURL *phoneUrl = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",[phonenumberstring stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]];
if ([[UIApplication sharedApplication] canOpenURL:phoneUrl]) {
[[UIApplication sharedApplication] openURL:phoneUrl];
} else {
UIAlertView *noAccess=[[UIAlertView alloc] initWithTitle:@"Title" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[noAccess show];
}
(OR)
NSURL *telURL = [NSURL URLWithString:@"tel:18005333333,,,1#,,,421#,,,959538788"];
[callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
希望它对你有所帮助......