IOSでプログラムで番号とアクセスコードを含む電話番号にダイヤルするにはどうすればよいですか?
例えば:
番号:900-3440-567
アクセスコード:65445
UIDevice *device = [UIDevice currentDevice];
if ([[device model] isEqualToString:@"iPhone"] ) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:130-032-2837"]]];
} else {
UIAlertView *notPermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[notPermitted show];
[notPermitted release];
}
チュートリアルに従う
番号を呼び出すには-
NSURL *url = [NSURL URLWithString:@"tel://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];
通話終了後にアプリを開くには-
(注:telpromptは文書化されていません)
NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];
UIApplication
のopenURL:
メソッドを使用して、プログラムで電話番号をダイヤルできます(以下の例を参照)。アクセスコードがサポートされているかどうかはわかりませんが、これは少なくとも出発点です。
NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"];
[[UIApplication sharedApplication] openURL:URL];
Edit:詳細については、 Apple URL Scheme Reference および IApplication Class Reference を参照してください。
アクセスコードを渡すためのソリューションを実際に見つけたかどうかはわかりませんが、私にとってはこのコードはうまくいきました:
NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"];
その結果、次の値を持つダイヤル文字列が生成されます。tel:9003440567,65445
残りの部分は、次のコマンドを使用してiOSの電話アプリによって管理されます。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:dialstring]];
,
は、最初の番号がダイヤルされて接続が確立された直後に、電話システム(会議室にアクセスしたいシステム)で一時停止を引き起こします。そのため、電話システムはアクセスコードを尋ねる時間を持っています(私たちのシステムが機能する方法は、あなたに尋ねるべきだと思います)。その後、アクセスコードを渡す必要があります。
BE AWARE:あなたのアクセスコードは秘密ではない方法で渡されます。例:表示されたアクセスコードは、iPhone電話アプリのディスプレイに次のように表示されます。9003440567、65445
このユーザーを使用すると、通話時にリダイレクトでき、通話後に自動的にアプリにリダイレクトされます。それは私のために働いており、それについて確信しています。
if ([[device model] isEqualToString:@"iPhone"] ) {
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:cellNameStr];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
} else {
UIAlertView *warning =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[warning show];
}
Swiftの自己完結型のソリューションを次に示します。
_private func callNumber(phoneNumber:String) {
if let phoneCallURL:NSURL = NSURL(string: "tel://\(phoneNumber)") {
let application:UIApplication = UIApplication.sharedApplication()
if (application.canOpenURL(phoneCallURL)) {
application.openURL(phoneCallURL);
}
}
}
_
これで、callNumber("7178881234")
を使用して呼び出しを行うことができるはずです。お役に立てれば!
番号とアクセスコードを含む電話番号をプログラムでダイヤルすることはできません。
Apple Developer Libraryは以下の情報を提供します:
"...電話アプリケーションは、telスキームのすべてではないが、ほとんどの特殊文字をサポートしています。具体的には、URLに*または#文字が含まれている場合、電話アプリケーションは、対応する電話番号をダイヤルしようとしません。」
電話のURLを使用して、電話アプリケーションを呼び出して番号をダイヤルできます。これを参照してください 参照 。
欠点は、通話が終了すると、ユーザーが電話アプリケーションで終了することです。しかし、私はその問題の解決策がないことを恐れています。 iOSでは、セキュリティとプライバシーの理由から、アプリケーションが通話を直接開始することは許可されていません。
番号のダイヤル中に一時停止を導入するためにカンマを使用できます。
電話番号をダイヤルする方法と、それを使用する方法はいくつかあります。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@ "tel:555-555-5555"]
これを行うには有効な方法ですが、多くの問題があります。 1つ目はユーザーに適切にプロンプトを表示せず、2つ目は、通話の完了時にユーザーをアプリケーションに戻さないことです。適切に電話をかけるには、通話の前にプロンプトを表示してユーザーを驚かせないようにし、通話が完了したらユーザーをアプリケーションに戻す必要があります。
これらの両方は、ここの回答のいくつかで提案されているように、プライベートAPIを使用せずに達成できます。推奨されるアプローチではtelprompt apiを使用しますが、呼び出しのプライベートなインスタンス化は使用せず、代わりに将来の互換性を考慮してWebビューを作成します。
+ (void)callWithString:(NSString *)phoneString
{
[self callWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneString]]];
}
+ (void)callWithURL:(NSURL *)url
{
static UIWebView *webView = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
webView = [UIWebView new];
});
[webView loadRequest:[NSURLRequest requestWithURL:url]];
}
サンプルプロジェクトと追加情報は次のとおりです。 http://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel- in-an-ios-app /