iPhone,拨打另一个电话号码以响应第一个电话号码未接听?

2024-04-24

我正在尝试创建一个应用程序,该应用程序将向类似呼叫中心的列表上的优先级 1 联系人发起呼叫。

然后,如果该联系人没有应答(让我们忘记这里应答机的整个问题),我想呼叫优先级 2 联系人,依此类推,直到其中一个联系人应答或我用完我的列表。

这可能吗?

我尝试过以下方法:

  1. 钩入CTCallCenter.CallEventHandler事件,并检查呼叫状态CTCallStateConnected and CTCallStateDisconnected,我得到它来响应呼叫断开的事实,没有连接,然后尝试像我第一次那样发起另一个呼叫,但第二次尝试只是停滞在水中。
  2. 覆盖DidEnterBackground方法,并定期检查CTCall.CallState属性,基本上再次尝试响应从未连接过的断开连接,但这似乎也不起作用

我还尝试在尝试下一次拨号之前检测到断开连接状态后添加短暂的延迟(1 秒、2.5 秒和 10 秒),以允许电话应用程序在中止呼叫后“稳定下来”,但这并没有改变任何内容。


我认为这个问题最好在电话目的地解决。我要么让电话公司配置“跟随我”服务,使用 Twilio 或其他一些第三方服务(如已经建议的那样),要么使用类似的东西配置我自己的 PBXAsterisk http://www.asterisk.org/(Asterisk 包括配置“跟随我”类型行为的能力)。它为您提供了更大的灵活性和控制力,即使您确实找到了在 iOS 中本地执行此操作的方法。

话虽如此,我确实让它在 iOS 中工作,假设如下:

  1. 您的应用程序发起呼叫。
  2. 电话应用程序打开,拨打号码,然后断开连接。
  3. 用户明确返回到您的应用程序。如果您在应用程序处于后台时设法获取事件,我想了解更多:-)。
  4. 将控制权返回到您的应用程序后,将发送电话事件并发起新呼叫。

我的 UIApplicationDelegate didFinishLaunchingWithOptions 方法中有以下代码片段:

// In appdelegate header, ct is declared as @property (strong, nonatomic) CTCallCenter *ct; 
self.ct = [[CTCallCenter alloc] init];
self.ct.callEventHandler = ^(CTCall *call) {
    if (call.callState == CTCallStateConnected) {
        // do some state management to track the call
    } else if (call.callState == CTCallStateDisconnected) {
        // check that this is the expected call and setup the
        // new phone number
        NSURL *telURL = [NSURL URLWithString:myNewNumberURL];
        [application openURL:telURL];    
    }     
};

这将拨打新电话。我使用的是 iOS 5 SDK;在 iPhone 4s 上进行测试。

EDIT:

Using 通话后返回应用程序行为与 UIWebView 的本机代码不同 https://stackoverflow.com/questions/5317783/return-to-app-behavior-after-phone-call-different-in-native-code-than-uiwebview作为一个起点,我已经设法让它发挥作用。请注意,为了清楚起见,我已经把重点放在了内存管理上。假设您使用 Web 视图技术在调用完成后返回应用程序,请在调用完成块中尝试类似以下操作:

else if (call.callState == CTCallStateDisconnected) {
    // check that this is the expected call and setup the
    // new phone number
    NSURL *telURL = [NSURL URLWithString:myNewNumberURL];
    dispatch_async(dispatch_get_main_queue(), ^{
        UIWebView *callWebview = [[UIWebView alloc] init]  ;
        [self.window.rootViewController.view addSubview:callWebview];
        [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]]; 
        // and now callWebView sits around until the app is killed....so don't follow this to the letter.  
    });
}

然而,这可能也不能完全满足您的需求。用户将收到有关每个呼叫请求的警报,从而提供取消呼叫的机会。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone,拨打另一个电话号码以响应第一个电话号码未接听? 的相关文章

  • 将图像添加到 uitableview 单元格

    我有一个tableview 如何将图像添加到该单元格的左侧 cell imageView image UIImage imageNamed image png 更新 就像 Steven Fisher 所说 这应该只适用于具有 UITable
  • 更改 iOS 地图中的图钉方向

    环球银行金融电信协会3 0 MKMAP视图 iOS Note 融合的AppleMap 不与GoogleMap 我做了以下事情 实现地图并将自定义图像添加到用户位置注释 当地图打开时 它会在正确的位置显示用户位置 我的要求 当用户移动到不同方
  • 如何快速更改 SKSpriteNode 的颜色?

    我创建了一个游戏SKSpriteNode那是黑色的 当用户触摸屏幕时我想要SKSpriteNode更改为白色 我已经用谷歌搜索了一切 并尝试了很多不同的策略 但没有成功 有谁知道如何做到这一点 这是我的场景的代码 var blackBird
  • 在 Swift 中获取可见的 IndexPath UICollectionView

    如何获得visible IndexPath while scrolling in collectionView 我参考了很多link1 https stackoverflow com questions 30281451 iterate o
  • Xamarin.iOS 上的 MakeGenericMethod/MakeGenericType

    我试图弄清楚从 Xamarin 部署 iOS 时这些限制的真正含义 http developer xamarin com guides ios advanced topics limitations http developer xamar
  • UITextView 格线背景但行高错误

    我有一个 UITextView 用户可以在其中创建注释并保存到 plist 文件中 我希望能够像普通笔记本一样显示线条 我遇到的问题是 文本无法正确对齐 下图很好地解释了这个问题 This is the background I use t
  • CALayer 的 display/drawRect 方法中到底应该发生什么?

    如果有的话 这些方法中哪一个适合 更改 CATextLayer 的文本 将不同的图像加载到 CAImageLayer 中 告诉子层自我更新 老兄 我可能喝醉了 但是没有drawRect方法CAlayers 我想你可以使用drawInCont
  • Swift UITextFieldShouldReturn 返回键点击

    iOS8 Xcode6 斯威夫特 使用 Swift 如何捕获 返回 按钮上的点击 以下链接中的文档指定使用textFieldShouldReturn方法 Swift optional func textFieldShouldReturn t
  • 使用 MKPolyline 在两个位置之间绘制路径

    I am trying to show route between two locations with the help of this http spitzkoff com craig p 136 tutorial They have
  • 使用 NSUserdefaults 将数据从一个 ViewController 传递到另一个 ViewController

    我需要将数据从一个 ViewController 传输到另一个 ViewController 这里我在第一个 ViewController 中有多个文本字段 然后它将传递我在 FirstViewController 中输入的任何数据中的 S
  • 在tesseract中添加任何traineddata文件并在IOS中使用

    我能够编译英语版本 该版本已经在 tesseract 的示例中 但无法添加其他语言 例如 ara traineddata 我正在做这样的事 Tesseract tesseract Tesseract alloc initWithDataPa
  • React Native iOS Release 构建停留在旧代码上,但 Debug 构建工作正常

    当我尝试构建我的 React Native 应用程序时XCode in Release mode在将其投入生产之前进行检查 它是否会陷入旧代码中 无论我对 JS 文件进行什么更改 它都不会执行此操作 在调试模式下 这种情况不会发生 只是正常
  • 如何获取默认的iOS浏览器名称?

    Stack Overflow 应用程序检测到我越狱设置的默认浏览器 Chrome 的名称 我怎样才能在 Objective C 和 Swift 中实现同样的目标 只是名称 不是 ActivityView 代码 Example Update
  • iOS后台Location不发送http请求

    我的应用程序需要在后台跟踪用户位置 但无法发送 获取 请求 当应用程序到达前台时 http 请求会立即发送 我正在使用 RestKit 来处理所有网络请求 并且遵循本教程 http www mindsizzlers com 2011 07
  • UICollectionView 垂直居中

    我有一个UICollectionView大小的对象 320 500 我需要一个来创建UICollectionView以这样的方式 内容垂直居中 意味着如果内容的总大小为 100 100 则单元格应在矩形 0 200 320 300 中绘制自
  • setAnnotation - 无法识别的选择器

    点击搜索按钮后在设备上运行时 我收到此错误 但它在模拟器中工作 2013 03 08 17 58 33 981 IPAD 2661 907 Slider values are min 5000 000000 and max 500000 0
  • 元视口标签似乎被完全忽略或没有效果

    我把这个标签放在了头部一个网页 http www belovedobjects de 由于某种原因 它在我的 iPhone 上似乎被忽略了 甚至添加了user scalable no没有影响 我尝试了许多宽度 初始比例等值 似乎没有任何效果
  • @iPhone:如何在我们的应用程序中创建 twitter + OAuth 自定义登录

    我正在制作iphone应用程序 我正在使用 OAuth 集成 Twiiter 我的问题是我想要自己的登录页面 而不是像 twitter 提供的新 OAuth 集成那样由 twitter 提供 通过在新的 OAuth 中创建自定义登录页面 是
  • iOS 中的自动旋转崩溃

    当我更改设备方向时 我正在使用的应用程序出现异常终止 崩溃 我无法经常重现它 当我旋转时 它并不总是发生 假设机会约为 0 01 但这是一个严重的问题 我附上崩溃报告的重要部分 Exception Type EXC BAD ACCESS S
  • 更改 NSManagedObject 属性而不触发委托方法?

    有什么方法 或技巧 可以修改NSManagedObject目前由一名代表持有NSFetchedResultsController不触发didChangeObject and controllerWillChangeContent 委托方法

随机推荐