web-dev-qa-db-ja.com

iOSアプリケーションで電話をかける

アプリケーション内で呼び出しを行おうとするコードがいくつかありますが、機能していないようです。

_    UIApplication *myApp = [UIApplication sharedApplication];
    NSString *theCall = [NSString stringWithFormat:@"tel://%@",phone];
    NSLog(@"making call with %@",theCall);
    [myApp openURL:[NSURL URLWithString:theCall]];
_

時々、変数phone@"(102) 222-2222"のようなものです。このような電話番号で電話をかけるにはどうすればよいですか?手動で数字を抽出して、余分な句読点をすべて取り除く必要がありますか?

33
CodeGuy

うん。あなたはそれらを自分で取り除く必要があります。または、以下のスニペットを使用できます...

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];
NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];

注:-stringByTrimmingCharactersInSet:を使用したくなるかもしれませんが、文字列の最初と最後の文字のみが削除され、途中にある場合は削除されません。

80
Johan Kool

元のアプリに戻るには、tel://の代わりにtelprompt://を使用できます。tellプロンプトは最初にユーザーにプロンプ​​トを表示しますが、通話が終了するとアプリに戻ります。

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

上記の回答の最新情報。

23
D-eptdeveloper

これは、呼び出しを行い、呼び出しが終了した後にアプリに戻るために使用できる簡単なメソッドです。

以下を.mファイルに追加します

- (void) dialNumber:(NSString*) number{
number = [@"telprompt://" stringByAppendingString:number];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:number]];
}

次に、呼び出し元のどこにでも次のコードを追加します。

[self dialNumber:@"5031234567"];
1
Trianna Brannon