以编程方式拨打电话号码并使用iPhone SDK传递DTMF

问题描述 投票:30回答:6

如何以编程方式从iPhone SDK执行以下操作:

  1. 以编程方式通过iPhone SDK拨打电话号码
  2. 绕过iPhone显示的拨号/取消提示
  3. 拨号后发送额外的DTMF,就像您将暂停编程到普通电话中一样。

我知道你可以进行tel://通话,但问题是它会调出拨号/取消提示,之后它会阻止任何未来的DTMF被发送。

ios phone-call
6个回答
31
投票

iPhone SDK不允许您直接访问拨号号码(想象一下,如果手机上有“坏”程序,并且静音拨打了每分钟付费号码,那么您就没有注意到)。

但是,如果您使用tel链接,那么您应该能够发送“,”插入暂停的字符。

所以要拨打555-1212,然后等待4秒,然后按触摸音做12345#你会用tel:5551212 ,, 12345#

看看https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html


18
投票

我不知道为什么每个人都说你不能......你可以!

NSString *phoneNumber = @"15555551212";
NSString *dtmfAfterPickup = @"1234";
NSString *telString = [NSString stringWithFormat:@"tel:%@,%@", phoneNumber, dtmfAfterPickup];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:telString]];

这将拨打phoneNumber绕过拨号/取消提示...在应答呼叫后1秒钟,将自动拨打dtmfAfterPickup字符串。

detect whether or not the device support phone calls来说这是一个好主意


2
投票

根据上面的Adam的Apple开发人员链接,这个RFC链接解释了有关iPhone支持的电话链接方案的不同选项的更多信息 -

http://www.ietf.org/rfc/rfc2806.txt

这至少允许您在URL中插入带有'p'的暂停,但是根据RFC指定了很多选项(但并非所有选项都是必需的)。还有什么用?


1
投票

我使用CoronaSDK和openurl API尝试使用我的iPhone。它运作得很好!只需:system.openURL(“tel:[phonenumber],123”)。您可以使用附加逗号等待更多内容。使用Corona SDK / iOS7进行测试。


0
投票

实际上,我刚尝试了以下555-555-4822 EXT 8030

并且即使在按下拨号后它似乎也传输了一些音调(p的数量表示延迟的秒数)。然而,音调没有按预期在远端响应,所以有些事情仍然存在问题。

然而,这确实有效,虽然它更容易出现计时问题,电话:555-555-4822,8030。这只是在连接后暂停一秒钟(,即两秒钟),然后播放8030音调


-1
投票

你不能这样做。 SDK不允许您在此详细级别中控制电话功能。

© www.soinside.com 2019 - 2024. All rights reserved.