9

オランダのさまざまなサービスセンターに電話をかけることができるアプリを作成しています。問題は、それらのいくつかが異なる商用フォーマット(0800-xxxxなど)を持っており、デバイスが電話をかけることができないことです。コードは次のようになります。

if ([[UIApplication sharedApplication] canOpenURL:phoneURL]) {
    [[UIApplication sharedApplication] openURL:phoneURL];
}

番号のフォーマットや、フォーマットに関係なく電話をかける方法を知っていますか?

編集:これはphoneNumberが作成される方法です:

NSString *phoneNumberString = phoneNumber; // dynamically assigned
NSString *phoneURLString = [NSString stringWithFormat:@"telprompt:%@", phoneNumberString];
NSURL *phoneURL = [NSURL URLWithString:phoneURLString];
4

2 に答える 2

27

私はこのコードを使用しましたが、機能しました。

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];
NSString *escapedPhoneNumber = [cleanedString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *phoneURLString = [NSString stringWithFormat:@"telprompt:%@", escapedPhoneNumber];
NSURL *phoneURL = [NSURL URLWithString:phoneURLString];

if ([[UIApplication sharedApplication] canOpenURL:phoneURL]) {
    [[UIApplication sharedApplication] openURL:phoneURL];
}
于 2012-09-10T14:22:10.017 に答える
1
NSString *strm = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)mob, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
NSString *strMob = [[NSString alloc] initWithFormat:@"tel://%@",strm];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:strMob]];

このコードを試してください。これは、あらゆる種類の形式で完全に機能します。完全な呼び出しURLに変換されます。

于 2012-09-06T10:19:37.590 に答える